On Tuesday 08 October 2013 19:34:03 Phil Longstaff wrote:
> I don't see any command line options which limit helgrind to ignoring
> read/write or write/read conflicts and only displaying write/write
> conflicts.  Would that be hard to add?
> 
> We have situations where we think only 1 thread updates some counter, and
> periodically, another thread reads the value for display.  If there's a
> conflict, we don't really care whether the display shows the before or the
> after value.  However, we are interested in knowing if some other code path
> tries to update the value i.e. we care about write/write conflicts.

A read-write conflict is still a race condition, which leads to undefined 
behavior according to the C++11 standard. On some non-x86 platforms, you could 
end up with the displayed value always being 0, for instance, if the CPU 
running that thread keeps getting it from its outdated cache. Without mutexes 
or atomic operations, there's no guarantee that cache will ever get updated.
My advice is to use std::atomic_int -- which provides exactly the behavior 
you're hoping to get ("we don't care whether the display shows the before or 
the after value").
This being said, helgrind might be missing suppressions for atomic_int (the 
same way I'm using suppressions for Qt's QAtomicInt) - since on the special 
case of x86, the two can't be distinguished by helgrind.

-- 
David Faure, fa...@kde.org, http://www.davidfaure.fr
Working on KDE, in particular KDE Frameworks 5


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to