http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50175
Jakub Jelinek jakub at gcc dot gnu.org changed:
What|Removed |Added
CC||jakub at gcc dot gnu.org,
||rth at gcc dot gnu.org
--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-24
14:55:18 UTC ---
If this is about bar-arrived writes, then I don't see any races.
During the lifetime of a barrier, in the first phase arrived is incremented by
each thread, guarded by bar-mutex1 lock. The threads then unlock bar-mutex1
lock, except for the last thread which keeps it locked and decrements
bar-arrived again, then, still with bar-mutex1 locked wakes up all the other
threads which then either atomically, or guarded with bar-mutex2 lock,
decrement bar-arrived again. The last of those threads then posts to
bar-sem2
semaphore on which the thread holding bar-mutex1 is waiting before unlocking
that lock. Thus, I don't see how the first phase (where bar-arrived
adjustments are done guarded with bar-mutex1 lock) can overlap with the second
phase (where it is decremented atomically or with mutex2). Not even the second
phase with following first phase. Thus I think valgrind is wrong about this.
CCing rth as author...