language: en

Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs

Stefan Savage
Department of Computer Science and Engineering University of Washington, Seattle
Michael Burrows Greg Nelson Patrick Sobalvarro
Digital Equipment Corporation Systems Research Center
Thomas Anderson
Computer Science Division University of California, Berkeley

Abstract Multi-threaded 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 paper describes a new tool, called Eraser, for dynamically detecting data races in lock-based multi-threaded 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 multi-threaded Web search engine, that demonstrate the effectiveness of this approach.

1 Introduction