Concurrency bugs that stem from schedule-dependent branches are hard to understand and debug, because their root causes imply not only different event orderings, but also changes in the control-flow between failing and non-failing executions. We present Cortex: a system that helps exposing and understanding concurrency bugs that result from schedule-dependent branches, without relying on information from failing executions. Cortex preemptively exposes failing executions by perturbing the order of events and control-flow behavior in non-failing schedules from production runs of a program. By leveraging this information from production runs, Cortex synthesizes executions to guide the search for failing schedules. Production-guided search helps cope with the large execution search space by targeting failing executions that are similar to observed non-failing executions. Evaluation on popular benchmarks shows that Cortex is able to expose failing schedules with only a few perturbations to non-failing executions, and takes a practical amount of time.
Wed 16 Mar
|11:35 - 12:00|
Georgios ChatzopoulosEcole Polytechnique Federale de Lausanne (EPFL), Switzerland, Aleksandar DragojevićMicrosoft Research, Rachid GuerraouiEPFL, SwitzerlandLink to publication DOI
|12:00 - 12:25|
Ananya Muddukrishna, Peter A. JonssonSICS Swedish ICT AB, Artur PodobasKTH Royal Institute of Technology, Mats BrorssonKTH Royal Institute of TechnologyLink to publication DOI
|12:25 - 12:50|
Nuno MachadoINESC-ID / Instituto Superior Técnico, Universidade de Lisboa, Brandon LuciaCarnegie Mellon University, Luís RodriguesUniversidade de Lisboa, Instituto Superior Técnico, INESC-IDLink to publication DOI