| | |
Summary: Eraser: A Dynamic Data Race Detector for
Multithreaded Programs
STEFAN SAVAGE
University of Washington
MICHAEL BURROWS, GREG NELSON, and PATRICK SOBALVARRO
Digital Equipment Corporation
and
THOMAS ANDERSON
University of California at Berkeley
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 ob-
served. We present several case studies, including undergraduate coursework and a multi-
threaded Web search engine, that demonstrate the effectiveness of this approach.
Categories and Subject Descriptors: D.1.3 [Programming Techniques]: Concurrent Pro-
gramming--parallel programming; D.2.5 [Software Engineering]: Testing and Debugging--
debugging aids; monitors; tracing; D.4.1 [Operating Systems]: Process Management--
concurrency; deadlock; multiprocessing/multiprogramming; mutual exclusion; synchronization
|