Regression-free Synthesis for Concurrency
Pavol \v{C}ern\'y, Thomas A. Henzinger, Arjun Radhakrishna, Leonid, Ryzhyk, and Thorsten Tarrach

TL;DR
This paper introduces a regression-free program repair algorithm for concurrent programs that learns constraints from both correct and erroneous traces to avoid introducing new bugs during fixing.
Contribution
The paper presents a novel algorithm that prevents regressions in concurrent program repair by learning constraints from positive and negative examples.
Findings
Successfully repaired Linux device drivers without regressions
The algorithm effectively learns constraints to avoid introducing new bugs
Evaluation shows improved reliability in concurrent program fixing
Abstract
While fixing concurrency bugs, program repair algorithms may introduce new concurrency bugs. We present an algorithm that avoids such regressions. The solution space is given by a set of program transformations we consider in for repair process. These include reordering of instructions within a thread and inserting atomic sections. The new algorithm learns a constraint on the space of candidate solutions, from both positive examples (error-free traces) and counterexamples (error traces). From each counterexample, the algorithm learns a constraint necessary to remove the errors. From each positive examples, it learns a constraint that is necessary in order to prevent the repair from turning the trace into an error trace. We implemented the algorithm and evaluated it on simplified Linux device drivers with known bugs.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
