> > > Have you already found a workaround that allows to avoid triggering > the race report on std::locale::locale() ? If not, it would help if > you could post a small example that allows to reproduce this behavior. >
You may like the test NegativeTests.EmptyRepTest from http://code.google.com/p/data-race-test/wiki/RacecheckUnittest % ~/valgrind/trunk/inst/bin/valgrind --tool=helgrind ./bin/racecheck_unittest-linux-x86-O0 --gtest_filter="NegativeTests.EmptyRepTest" ==28925== Possible data race during read of size 4 at 0x7fbf5b8 by thread #3 ==28925== at 0x7F6F3A2: std::string::erase(unsigned int, unsigned int) (in /usr/grte/v1/lib/libstdc++.so.6.0.9) ==28925== by 0x804CB82: NegativeTests_EmptyRep::Worker() (racecheck_unittest.cc:3168) ==28925== by 0x806E806: MyThread::ThreadBody(MyThread*) (thread_wrappers_pthread.h:329) ==28925== by 0x47C4155: mythread_wrapper (hg_intercepts.c:213) ==28925== by 0x47F1024: start_thread (in /usr/grte/v1/lib/ libpthread-2.3.6.so) ==28925== by 0x1BD4A75D: clone (in /usr/grte/v1/lib/libc-2.3.6.so) ==28925== This conflicts with a previous write of size 4 by thread #2 ==28925== at 0x7F6EC1B: std::string::_M_mutate(unsigned int, unsigned int, unsigned int) (in /usr/grte/v1/lib/libstdc++.so.6.0.9) ==28925== by 0x7F6F3C6: std::string::erase(unsigned int, unsigned int) (in /usr/grte/v1/lib/libstdc++.so.6.0.9) ==28925== by 0x804CB82: NegativeTests_EmptyRep::Worker() (racecheck_unittest.cc:3168) ==28925== by 0x806E806: MyThread::ThreadBody(MyThread*) (thread_wrappers_pthread.h:329) ==28925== by 0x47C4155: mythread_wrapper (hg_intercepts.c:213) ==28925== by 0x47F1024: start_thread (in /usr/grte/v1/lib/ libpthread-2.3.6.so) ==28925== by 0x1BD4A75D: clone (in /usr/grte/v1/lib/libc-2.3.6.so) % ~/valgrind/trunk/inst/bin/valgrind --tool=drd ./bin/racecheck_unittest-linux-x86-O0 --gtest_filter="NegativeTests.EmptyRepTest" ==28930== ==28930== Conflicting load by thread 3 at 0x04b1f5b8 size 4 ==28930== at 0x4ACEB7E: std::string::_M_mutate(unsigned int, unsigned int, unsigned int) (in /usr/grte/v1/lib/libstdc++.so.6.0.9) ==28930== by 0x4ACF3C6: std::string::erase(unsigned int, unsigned int) (in /usr/grte/v1/lib/libstdc++.so.6.0.9) ==28930== by 0x804CB82: NegativeTests_EmptyRep::Worker() (racecheck_unittest.cc:3168) ==28930== by 0x806E806: MyThread::ThreadBody(MyThread*) (thread_wrappers_pthread.h:329) ==28930== by 0x47C9BBD: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272) ==28930== by 0x47F7024: start_thread (in /usr/grte/v1/lib/ libpthread-2.3.6.so) ==28930== by 0x4BED75D: clone (in /usr/grte/v1/lib/libc-2.3.6.so) ==28930== Allocation context: BSS section of /usr/grte/v1/lib/libstdc++.so.6.0.9 ==28930== Other segment start (thread 2) ==28930== (thread finished, call stack no longer available) ==28930== Other segment end (thread 2) ==28930== (thread finished, call stack no longer available) ==28930== --kcc
------------------------------------------------------------------------------
_______________________________________________ Valgrind-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/valgrind-users
