diff --git a/src/ros_publish.cpp b/src/ros_publish.cpp
index 06d483f0e44a0c4d2195e4308b37a03630fad20a..c9856483d1534dd666ac2db5791d6f026195b32d 100644
--- a/src/ros_publish.cpp
+++ b/src/ros_publish.cpp
@@ -220,9 +220,10 @@ namespace dynamicgraph
     }
 
     //lock the mutex to avoid deleting the signal during a call to trigger
+    boost::mutex::scoped_lock lock (mutex_);
+
     signalDeregistration(signal);
     bindedSignal_.erase (signal);
-    mutex_.unlock();
   }
 
   std::string RosPublish::list () const
@@ -262,13 +263,14 @@ namespace dynamicgraph
 
     nextPublication_ = ros::Time::now() + rate_;
 
+    boost::mutex::scoped_lock lock (mutex_);
+
     while(! mutex_.try_lock() ){}
     for (iterator_t it = bindedSignal_.begin ();
 	 it != bindedSignal_.end (); ++it)
       {
 	boost::get<1>(it->second) (t);
       }
-    mutex_.unlock();
     return dummy;
   }
 
diff --git a/src/ros_publish.hh b/src/ros_publish.hh
index 6005f3ee295cf62f51c101f9856153dcd8e37224..bd9f81beae8b7d30b2f2ad99f0ac6fb1daf306c2 100644
--- a/src/ros_publish.hh
+++ b/src/ros_publish.hh
@@ -4,7 +4,7 @@
 
 # include <boost/shared_ptr.hpp>
 # include <boost/tuple/tuple.hpp>
-# include <boost/interprocess/sync/interprocess_mutex.hpp>
+# include <boost/thread/mutex.hpp>
 
 # include <dynamic-graph/entity.h>
 # include <dynamic-graph/signal-time-dependent.h>
@@ -94,7 +94,7 @@ namespace dynamicgraph
     dynamicgraph::SignalTimeDependent<int,int> trigger_;
     ros::Duration rate_;
     ros::Time nextPublication_;
-    boost::interprocess::interprocess_mutex mutex_;
+    boost::mutex mutex_;
   };
 } // end of namespace dynamicgraph.