sewardj | f98e1c0 | 2008-10-25 16:22:41 +0000 | [diff] [blame] | 1 | |
| 2 | YARD, Yet Another Race Detector, built on the Helgrind framework |
| 3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 4 | |
| 5 | Julian Seward, OpenWorks Ltd, 19 August 2008 |
| 6 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 7 | |
| 8 | The YARD race detector lives in svn://svn.valgrind.org/branches/YARD. |
| 9 | |
| 10 | It uses a new and relatively simple race detection engine, based on |
| 11 | the idea of shadowing each memory location with two vector timestamps, |
| 12 | indicating respectively the "earliest safe read point" and "earliest |
| 13 | safe write point". As far as I know this is a novel approach. Some |
| 14 | features of the implementation: |
| 15 | |
| 16 | * Modularity. The entire race detection engine is placed in a |
| 17 | standalone library (libhb_core.c) with a simple interface (libhb.h). |
| 18 | This makes it easier to debug and verify the engine; indeed it can |
| 19 | be built as a standalone executable with test harness using "make -f |
| 20 | Makefile_sa". |
| 21 | |
| 22 | * Simplified and scalable storage management, so that large programs, |
| 23 | with many synchronisation events, can be handled. |
| 24 | |
| 25 | * Ability to report both call stacks involved in a race, without |
| 26 | excessive time or space overhead. |
| 27 | |
| 28 | * Pure happens before operation, so as not to give any false |
| 29 | positives. |
| 30 | |
| 31 | To use, build as usual and run as "--tool=helgrind". |
| 32 | |
| 33 | You can disable lock order checking with --track-lockorders=no, as it |
| 34 | sometimes produces an annoying amount of output. |