Topic 5: data race detection
•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.