Closed paulfloyd closed 3 years ago
Doesn't seem obvious. Running a load of traces
../../vg-in-place --tool=helgrind -v -v -v -v -d -d -d -d --trace-redir=yes ../../drd/tests/pth_barrier 2 1 1
and then comparing 12.2 and 12.1 I see that
12.2 hase changed mmaps a bit (one extra file rw section mapped). This looks interesting. The diff above contains
Next thing I tried was running the test app under ktrace. There are some differences in the order of the calls to fork, thr_* and _umtx_op.
Soooo, switching to bar_trivial is it is simpler
readelf -a says that we have
000000204128 000900000007 R_X86_64_JUMP_SLOT 0000000000000000 pthread_barrier_wait + 0
and the 1st error message is
==46108== Address 0x204128 is in a rw- mapped file /usr/home/paulf/scratch/valgrind/helgrind/tests/bar_trivial segment
Possibly we're not correctly handling 2 RW LOAD segments (Linux only has 1).
Just taking one example
With luck this is either an intercept or a suppression problem. Otherwise it is going to be harder to fix.