Debug-Localize-Repair: A Symbiotic Construction for Heap Manipulations

Sahil Verma, Subhajit Roy

We present Wolverine, an integrated Debug-Localize-Repair environment for heap manipulating programs. Wolverine packages a new bug localization algorithm that reduces the search space of repairs and a novel, proof-directed repair algorithm to synthesize the repair patches. While concretely executing a program, Wolverine displays the abstract program states (as box-and-arrow diagrams) as a visual aid to the programmer. Wolverine supports "hot-patching" of the generated patches to provide a seamless debugging environment, and the bug localization enkindles tremendous speedups in repair timing. Wolverine also facilitates new debug-localize-repair possibilities, specification refinement, and checkpoint-based hopping. We evaluate our framework on 6400 buggy programs (generated using automated fault injection) on a variety of data-structures like singly, doubly, and circular linked lists, AVL trees, Red-Black trees, Splay Trees, and Binary Search Trees; Wolverine could repair all the buggy instances within realistic programmer wait-time (less than 5 sec in most cases). Wolverine could also repair more than 80% of the 247 (buggy) student submissions (where a reasonable attempt was made).

Knowledge Graph

arrow_drop_up

Comments

Sign up or login to leave a comment