Files
ftmemsim-valgrind/helgrind/docs/hg_main.html
Julian Seward 0f6cf30022 Restructure the documentation to try and make it hang together better.
Majorly improved.  Still a lot to do, but the structure is better.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1324
2002-11-18 00:07:28 +00:00

57 lines
1.8 KiB
HTML

<html>
<head>
<title>Helgrind: a data-race detector</title>
</head>
<a name="hg-top"></a>
<h2>6&nbsp; Helgrind: a data-race detector</h2>
To use this skin, you must specify <code>--skin=helgrind</code> on the
Valgrind command line.
<p>
Helgrind is a Valgrind skin for detecting data races in C and C++ programs
that use the Pthreads library.
<p>
It uses the Eraser algorithm described in
<blockquote>
Eraser: A Dynamic Data Race Detector for Multithreaded Programs<br>
Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro and
Thomas Anderson<br>
ACM Transactions on Computer Systems, 15(4):391-411<br>
November 1997.
</blockquote>
We also incorporate significant improvements from this paper:
<blockquote>
Runtime Checking of Multithreaded Applications with Visual Threads
Jerry J. Harrow, Jr.<br>
Proceedings of the 7th International SPIN Workshop on Model Checking of
Software<br>
Stanford, California, USA<br>
August 2000<br>
LNCS 1885, pp331--342<br>
K. Havelund, J. Penix, and W. Visser, editors.<br>
</blockquote>
<p>
Basically what Helgrind does is to look for memory locations which are
accessed by more than one thread. For each such location, Helgrind
records which of the program's (pthread_mutex_)locks were held by the
accessing thread at the time of the access. The hope is to discover
that there is indeed at least one lock which is used by all threads to
protect that location. If no such lock can be found, then there is
(apparently) no consistent locking strategy being applied for that
location, and so a possible data race might result.
<p>
There's a lot of other sophistication in the Helgrind skin, aimed at
reducing the number of false reports, and at producing useful error
reports. We hope to have more documentation soon.
</body>
</html>