On Tue, 2014-08-19 at 21:44 +0200, David Faure wrote:
> On Tuesday 19 August 2014 21:00:58 Philippe Waroquiers wrote:
> > On Tue, 2014-08-19 at 16:46 +0200, Roland Mainz wrote:
> > > > ThreadSanitizer won't comprehend the fence instructions inserted by
> > > > urcu.
> > > > I believe even Helgrind won't, because these instructions do not imply
> > > > any happens-before relation.
> > > 
> > > Is there any opensource or commercial tool which might help in such
> > > situations (e.g. problems with memory barriers) ?
> > 
> > helgrind or drd or ThreadSanitizer could still be used for race
> > condition detection but you would have to annotate either the rcu
> > library or the calling code to describe the happens before
> > relationships.
> 
> Are such annotations documented somewhere?
http://www.valgrind.org/docs/manual/hg-manual.html#hg-manual.client-requests
gives a list of such annotations, and points to helgrind.h for more
information.

> I'm still trying to find a way to annotate threadsafe-statics so that 
> helgrind 
> doesn't complain about them.
What is a threadsafe-static ?
Is that using __thread in something like:
  void fun(void)
  {
     static __thread int no_race_on_this_var_is_possible;
     ....
  }

If that is the case, I am just finishing a change that should avoid
false positive in __thread variables.

Humph, replace rather 'change' by kludge: 
The user will have to add the option
     --sim-hints=no-nptl-pthread-stackcache
and that uses a nasty kludge to disable the nptl pthread stack&tls
cache, as helgrind does not understand that the memory for e.g.
tls __thread variables is "safely" re-usable by another thread once the
thread is finished.

Philippe



------------------------------------------------------------------------------
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to