Automatically Repairing Concurrency Bugs with ARC

by David Kelk, Kevin Jalbert, Jeremy S. Bradbury

Abstract

In this paper we introduce ARC – a fully automated system for repairing deadlocks and data races in concurrent Java programs. ARC consists of two phases: (1) a bug repair phase and (2) an optimization phase. In the first phase, ARC uses a genetic algorithm without crossover to mutate an incorrect program, searching for a variant of the original program that fixes the deadlocks and data races. As this first phase may introduce unneeded synchronization that can negatively affect performance, a second phase attempts to optimize the concurrent source code by removing any excess synchronization without sacrificing program correctness. We describe both phases of our approach and report on our results.

Bibliographic Information [Bibtex format]

@inproceedings{KJB13,
 Author = {David Kelk, Kevin Jalbert, Jeremy S. Bradbury},
 Title = {Automatically Repairing Concurrency Bug With ARC},
 Booktitle = {Proc. of the 1st International Conference on Multicore Software Engineering, Performance, and Tools (MUSEPAT 2013)},
 Pages = 73--84,
 Month = {Aug.},
 Year = {2013}
}

Paper: [PDF]   Presentation: [PDF]   Software: [GitHub]