Skip to main content

November 2, 2011

Speakers: Kevin Jalbert, MSc student, UOIT; David Kelk, PhD student, UOIT

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.

University of Ontario Institute of Technology logo