•Context:
–Multithreaded programming is error-prone:
synchronization bugs
are easy to make but hard to find (even in Java).
•Problem:
–How to build debuggers that will help find the race
condition?
–Can we do it without exhaustively searching for an input
and tread interleaving that will
manifest the race?
•Solution:
–Determine if each access to a shared variable/object is
guarded by the same
locks.
–static detection: many false alarms.
–dynamic detection: high-overhead.
–a hybrid may be the right solution.
•Papers:
–Eraser, (dynamic detection)
Savage et al.
–Efficient and Precise Datarace Detection (hybrid) [coming soon] …, Choi et al.