blob: da036877dce3f76d610c1f4fe6e1ded77003db63 [file] [log] [blame]
Last updated August 7, 2009.
~~~~~~~~~~~~~~~~~~~~~~~~~~
The DRD tool
~~~~~~~~~~~~
- Improve the code for suppressing races reported on glibc FILE objects, e.g. by
intercepting all operations on FILE objects and by associating mutex semantics
with FILE objects. Verify that races on unsynchronized *_unlocked() operations
are reported. Remove FILE-I/O suppression patterns from glibc-2.X-drd.supp.
See also http://www.unix.org/whitepapers/reentrant.html.
- Add locking order checking. Start from the following information:
* http://sourceforge.net/mailarchive/message.php?msg_id=alpine.LNX.1.10.0803270822080.17890%40mudge.stoecker.eu
* http://lwn.net/Articles/185605/
* http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/lockdep-design.txt;h=488773018152056ea159685e732e42452a7ae142;hb=HEAD
- Make sure tc14_laog_dinphils is run during drd regression tests
(only possible after locking order checking is implemented).
- Evaluate whether integration of drd with one of the available Valgrind GUI's
makes sense (http://valgrind.org/downloads/guis.html).
Testing
~~~~~~~
- Measure the performance and the memory overhead of drd on 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)
- Test with a multithreaded Python application.
Documentation
~~~~~~~~~~~~~
- Document the algorithms used in drd.
- Add comment on double checked locking.
- Add comment on lockless algorithms in general and circular buffers in
particular.
- Explain how to handle transactions (with regard to locking order).