Automatically Finding Patches Using Genetic Programming

Automatic repair of programs has been a longstanding goal in software engineering, yet debugging remains a largely manual process. We introduce a fully automated method for locating and repairing bugs in software. The approach works on off-the-shelf legacy applications and does not require formal specifications, program annotations or special coding practices. Once a program fault is discovered, an extended form of genetic programming is used to evolve program variants until one is found that both retains required functionality and also avoids the defect in question. Standard test cases are used to exercise the fault and to encode program requirements. After a successful repair has been discovered, it is minimized using structural differencing algorithms and delta debugging. We describe the proposed method and report results from an initial set of experiments demonstrating that it can successfully repair fifteen different C programs totaling 140k lines in under 200 seconds, on average.

Biography

Westley Weimer is an assistant professor at the University of Virginia. He started there in 2006, after completing a PhD with George Necula at Berkeley. His research interests include using static and dynamic analyses and transformations to improve software quality. Much of his recent work has dealt with defect reporting and repair. In his spare time, he enjoys fencing and overacting.