|
From: Duncan S. <bal...@fr...> - 2007-01-02 13:50:19
|
On Tuesday 2 January 2007 13:59, Bart Van Assche wrote: > On 1/1/07, Duncan Sands <bal...@fr...> wrote: > > Hi Bart, > > > > > A new drd version is available at > > > http://home.euphonynet.be/bvassche/valgrind/valgrind-6458-drd-2006-12-30.patch.gz. > > > > thanks for doing this. I gave it a whirl and it seems to work fine. However it > > reported a false positive: two threads, thread 1 and thread 2, write to the same > > memory location in an unsynchronized way, but they write *the same value* to it. > > Thread 1 then reads the value, which may have last been written by thread 1 or > > thread 2. This gets reported as a race, even though there is no race since the > > value read is independent of the order in which the threads wrote it: > > It wouldn't be easy to recognize this pattern in the drd tool. Drat. > Is it > possible to generate a suppression pattern with Valgrind's option > --gen-suppressions=all ? If it is the conflicting accesses are > triggered by the Ada implementation, I can add them to the default drd > suppression file. It is indeed in the Ada implementation. The following seems to work: --- default.supp 2007-01-02 14:18:33.000000000 +0100 +++ /usr/local/lib/valgrind/drd/default.supp 2007-01-02 14:42:49.000000000 +0100 @@ -188,3 +188,10 @@ drd:ConflictingAccess fun:_pthread_cleanup_push_defer } +{ + gnat@create_task + drd:ConflictingAccess + fun:system__task_primitives__operations__set_priority + fun:system__task_primitives__operations__create_task + fun:system__tasking__stages__activate_tasks +} Best wishes, Duncan. |