<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
This is a cool tool!<br>
<div class="im"><br></div></blockquote><div><br></div><div>Unfortunately, it doesn't really work for most applications.  While there are some things we should take a look at (the lock ordering warnings), everything else appears to be false positives.  Helgrind only really works if:</div>

<div><br></div><div> * You're not using any non-pthreads synchronization primitives (such as atomics) -- we are (shared_ptr uses atomic increment/decrement, shared_mutex is not pthreads-based, ...)</div><div> * You're not using pthreads condition variables -- we are, in many places</div>

<div> * You're not using memory pools -- we aren't currently (at least in roscpp), but probably will be at some point</div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="http://valgrind.org/docs/manual/hg-manual.html#hg-manual.effective-use">http://valgrind.org/docs/manual/hg-manual.html#hg-manual.effective-use</a></div>

<div><br></div><div>Realistically, if you want to use helgrind on your application you need to design your application around working with helgrind.  Otherwise the signal to noise ratio is too low to make it worthwhile -- though it can be useful at times when tracking down a specific bug.</div>

<div><br></div><div>Josh</div></div>