November 2, 2011
Title: ARC: Automatic Repair of Concurrency Bugs
Abstract: Concurrent software bugs appear intermittently due to the non-deterministic nature of how threads might be scheduled to run. A concurrency bug can be fixed by using known concurrency mechanisms to ensure proper thread scheduling. ARC takes advantage of this fact by evolving a buggy program using known concurrency mutation operators in attempts to ensure proper program execution. An evolved program is evaluated using ConTest by repeatedly exploring thread interleavings to provide a certain level of confidence that the majority of schedules have been explored. A fitness function will evaluated the functional correctness of the evolved program. The evaluation feedback from ConTest is used to heuristically select the most appropriate mutation operator to next apply. A second phase of evolution is applied after an appropriate level of functional fitness is achieved to optimize the non-functional fitness. This phase will minimize the usage of synchronization mechanisms to ensure timely execution of the evolved program while retaining the functional correctness.