CoopREP: Cooperative record and replay of concurrency bugs. (5th September 2017) - Machado, Nuno; Romano, Paolo; Rodrigues, Luís
Summary: This paper presents CoopREP, a system that provides support for fault replication of concurrent programs based on cooperative recording and partial log combination. CoopREP uses partial logging to reduce the amount of information that a given program instance is required to store to support deterministic replay. This allows reducing substantially the overhead imposed by the instrumentation of the code, but raises the problem of finding a combination of logs capable of replaying the fault. CoopREP tackles this issue by introducing several innovative statistical analysis techniques aimed at guiding the search of the partial logs to be combined and needed for the replay phase. CoopREP has been evaluated using both standard benchmarks for multithreaded applications and real‐world applications. The results highlight that CoopREP can successfully replay concurrency bugs involving tens of thousands of memory accesses, while reducing recording overhead with respect to state‐of‐the‐art noncooperative logging schemes by up to 13× (and by 2.4× on average). Abstract : This paper presents CoopREP, a system that leverages lightweight cooperative recording and partial log combination to replay concurrency bugs. CoopREP employs several innovative statistical analysis techniques aimed at effectively combining the partial logs captured from independent production runs into a single bug‐inducing replay log. The experimental evaluation using benchmark and real‐world applications shows that CoopREP can successfully replay concurrency bugs involving tens of thousands of memory accesses, with up to 13× less recording overhead than state‐of‐the‐art noncooperative logging schemes.