Tracking Conflicting Accesses Efficiently for Software Record and Replay
Record and replay, which records a multithreaded program's execution in one run and reproduces it deterministically in a second run, is useful for program debugging, fault detection and analysis. The key challenge in multithreaded record and replay is ensuring that conflicting, cross-thread accesses to shared variables are properly detected, recorded and reproduced. Numerous solutions have been proposed in both hardware and software to track these cross-thread accesses, but to date all general-purpose software solutions suffer from high overhead or have serious limitations. This paper introduces ROCTET, an approach for performing software-only deterministic record and replay.