Efficient and Precise Dynamic Race Detection for Object Oriented Programs
Concurrent shared-memory programs exhibit data races when thread scheduling
decisions lead to changes in output. Data races are very hard to detect
and debug because error-inducing schedules may be extremely rare and hard
to reproduce. Dynamic data race detection tools monitor a running program
and use heuristics to detect problems that can lead to data races, such
as violation of locking disciplines. We have built a dynamic race detector
that checks for violations of a very simple rule, namely that whenever
two threads access a common shared memory location, they must do so holding
at least one lock in common. We show that with two small enhancements,
this rule reveals dangerous races in real programs and seldom produces
spurious warnings. Previous race detectors of comparable accuracy impose
an order of magnitude overhead in run time. We describe static and dynamic
ptimization techniques which reduce the overhead to 13-42% in our benchmark!
s, faster even than other less accurate detectors.
This talk describes work done by Jong-Deok Choi, Keunwoo Lee, Alexey
Loginov, Robert O'Callahan, Vivek Sarkar, and Manu Sridharan, with the
help of the Jikes Research Virtual Machine (aka Jalapeno) team, and submitted
to PLDI '02.
Host: Karl Crary
of Programming Seminars
December 7, 2001
Wean Hall 8220