Deterministic dynamic race detection across program versions
Abstract
Dynamic race detectors are essential tools for identifying data races in multithreaded programs by analyzing execution traces. However, due to the non-deterministic nature of thread interleavings, race detection results can vary across runs - even without changes to program source or input - leading to inconsistent defect reporting and reduced developer confidence. This thesis presents STABLER, a framework for deterministic dynamic race detection that ensures consistent identification of unfixed races across multiple program versions.
STABLER intelligently records, transforms, and replays execution schedules to preserve racy behavior despite changes such as added or removed locks and shared memory accesses. The framework integrates with popular race detectors like DJIT+ and FastTrack, and experimental results on open-source multithreaded Java programs demonstrate its effectiveness. STABLER consistently detects all unfixed races across major releases, with acceptable performance overheads (maximum slowdown of 1.2× and 2.29× for the respective detectors). User studies further validate its robustness, showing that even after race fixes, the framework reliably identifies remaining issues. This work contributes a practical solution to the challenge of non-determinism in race detection workflows.