Stefan Savage,
Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas Anderson.
Eraser: A Dynamic Data Race Detector for Multithreaded Programs. ACM
Transactions on Computer Systems, vol. 15, no. 4, November 1997, pages 391 -
411. Also appeared in Proc. Sixteenth
ACM Symposium on Operating Systems Principles (SOSP), October 1997.
Abstract:
Multithreaded programming is difficult and error prone.
It is easy to make a mistake in synchronization that produces a data race, yet
it can be extremely hard to locate this mistake during debugging. This article
describes a new tool, called Eraser, for dynamically detecting data races in
lock-based multithreaded programs. Eraser uses binary rewriting techniques to
monitor every shared-memory reference and verify that consistent locking
behavior is observed. We present several case studies, including undergraduate
coursework and a multithreaded Web search engine, that demonstrate the
effectiveness of this approach.