Eraser: a dynamic data race detector for multithreaded programs

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-monory 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.

[1]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[2]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[3]  Butler W. Lampson,et al.  Experience with processes and monitors in Mesa , 1980, CACM.

[4]  David A. Padua,et al.  Event synchronization analysis for debugging parallel programs , 1989, Proceedings of the 1989 ACM/IEEE Conference on Supercomputing (Supercomputing '89).

[5]  Barton P. Miller,et al.  On the Complexity of Event Ordering for Shared-Memory Parallel Program Executions , 1990, ICPP.

[6]  Charles E. McDowell,et al.  Analyzing Traces with Anonymous Synchronization , 1989, ICPP.

[7]  Ken Kennedy,et al.  Parallel program debugging with on-the-fly anomaly detection , 1990, Proceedings SUPERCOMPUTING '90.

[8]  Edith Schonberg,et al.  An empirical comparison of monitoring algorithms for access anomaly detection , 2011, PPOPP '90.

[9]  Barton P. Miller,et al.  Improving the accuracy of data race detection , 1991, PPOPP '91.

[10]  Edith Schonberg,et al.  Detecting access anomalies in programs with critical sections , 1991, PADD '91.

[11]  John M. Mellor-Crummey,et al.  On-the-fly detection of data races for programs with nested fork-join parallelism , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[12]  Robert H. B. Netzer,et al.  Pace condition detection for debugging shared-memory parallel programs , 1992 .

[13]  Barton P. Miller,et al.  What are race conditions?: Some issues and formalizations , 1992, LOPL.

[14]  Mellor-CrummeyJohn,et al.  Compile-time support for efficient data race detection in shared-memory parallel programs , 1993 .

[15]  John M. Mellor-Crummey,et al.  Compile-time support for efficient data race detection in shared-memory parallel programs , 1993, PADD '93.

[16]  Steve R. Kleiman,et al.  Interrupts as threads , 1995, OPSR.

[17]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[18]  Chandramohan A. Thekkath,et al.  Petal: distributed virtual disks , 1996, ASPLOS VII.

[19]  Peter J. Keleher,et al.  Online data-race detection via coherency guarantees , 1996, OSDI '96.

[20]  Kourosh Gharachorloo,et al.  Shasta: a low overhead, software-only approach for supporting fine-grain shared memory , 1996, ASPLOS VII.

[21]  Shasta: A Low Overhead, Software-Only Approach for Supporting Fine-Grain Shared Memory , 1996, ASPLOS.

[22]  K. Rustan M. Leino,et al.  Extended static checking , 1998, PROCOMET.