|
From: Bart V. A. <bar...@gm...> - 2006-08-12 12:01:40
|
On 8/12/06, Nicholas Nethercote <nj...@cs...> wrote: > > On Sat, 12 Aug 2006, Bart Van Assche wrote: > > > Yes, the algorithm used in DRD recognizes user-built synchronization > > constructs (as long as these are implemented via POSIX thread > > synchronization function calls). And it doesn't report false positives > -- > > another known problem of the Eraser algorithm. > > Nice. So what's the status of DRD? > What already works: - support algorithms and data structures for the DIOTA algorithm: vector clocks, bitmaps for recording read and write accesses during execution, segments, keeping track of thread and mutex state information. - data-race detection for so-called fork-join parallelism (pthread_create() / pthread_join()). - support for pthread mutexes. - works already for toy examples (two threads / less than hundred mutex lock and unlock operations). What is still missing (in order of importance): - keeping track of all dynamically allocated memory. - better error reporting for stack and heap variables. - pthread condition variable state tracking and proper support for pthread condition variables. - testing with more complex multithreaded test programs. - 64-bit support / testing on PPC (current implementation is only tested on x86 yet). - unit tests. - documentation. ... Currently I'm debugging the thread and mutex support in drd, that's why I was asking about self-hosting valgrind. |