blob: 917d0cd6d714058454e0867f6c9f8b8ff9ea5863 [file] [log] [blame]
Last updated April 14, 2008.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Data-race detection algorithm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- More extensive testing of reader/writer locks.
- Regression test for bitmap manipulation functions.
- Continue discussion about unification of DRD and Helgrind client requests.
- Memory pool support.
- Add locking order checking.
- Continue the discussion on the Valgrind mailing list about docbook and
'make dist'.
- Let DRD print an error message and stop as soon as qt1, qt2 or qt3 is
loaded. Only qt4 is SMP safe.
- Add configure tests for the name of the 'kind' member in pthread_mutex_t.
- Find out why a race is reported on std::string::string(std::string const&)
(stc test case 16).
- Add support for objects that are shared over threads and that use reference
counting, e.g. std::string -- no races should be reported on the reference
count.
- Add test programs for destroying a condition variable / semaphore / barrier
being waited upon.
- Make sure an error message is printed if no debug information is found in
libopenmp.so.1.
- Make sure tc14_laog_dinphils is run during exp-drd regression tests.
- Find out why no line number or variable name information is printed for
races detected in parallel sections of OpenMP programs. An example:
./vg-in-place --tool=exp-drd exp-drd/tests/omp_prime 4 -t 2
- Find out why 'matinv 400' runs faster in 32-bit mode than in 64-bit mode
on the same CPU.
- testing on PPC and AIX (current implementation is only tested on X86 and
AMD64).
- Convert the array in drd_thread.c with thread information into an OSet.
- Performance testing and tuning, a.o. for kate / knode / open office / matinv.
Testing
~~~~~~~
- testing with more complex multithreaded test programs.
- test exp-drd's performance with the SPLASH-2 software, e.g. fft
(http://www-flash.stanford.edu/apps/SPLASH/) or the PARSEC benchmark
(http://parsec.cs.princeton.edu/license.htm).
- test with Synfig Studio (see also http://bugs.kde.org/show_bug.cgi?id=158555)
Documentation
~~~~~~~~~~~~~
- Document the command-line options of the exp-drd tool.
- Explain that happens-before race detectors are also suited for certain
classes of programs that do not follow a locking discipline
(e.g. exp-drd/test/matinv.c).
- Add a note about how much stack is needed for exp-drd itself.
Limitations
~~~~~~~~~~~
- Does not work with a glibc library compiled with linuxthreads -- NPTL is
required for proper operation.