Angelix

Semantics-based test-driven automated program repair tool for C programs

Download

Automated program repair

The once-futuristic idea of automated program repair is gradually becoming a reality. Several approaches for automatically fixing bugs have been proposed recently. They can be classified into search-based methods and semantics-based methods. Our semantic analysis based repair tool Angelix synthesizes repairs based on semantic information of the program and scales up to real-world software. Furthermore, our repair method can repair multiple buggy locations that are dependent on each other. In our experiments, Angelix generated repairs from large-scale programs such as Wireshark and Php. We also successfully generated a patch for the well-known Heartbleed vulnerability.

Semantic analysis based repair tool that generates quality repairs in a scalable fashion

Our tool can handle multiple buggy locations that are dependent on one another

Angelix generated multiline repairs from large scale real life programs like Wireshark and Php

Angelix synthesized a patch for the well-known Heartbleed vulnerability

Publications

Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis

S. Mechtaev, J. Yi, A. Roychoudhury

International Conference on Software Engineering 2016

DirectFix: Looking for Simple Program Repairs

S. Mechtaev, J. Yi, A. Roychoudhury

International Conference on Software Engineering 2015

SemFix: Program Repair via Semantic Analysis

H.D.T. Nguyen, D. Qi, A. Roychoudhury, S. Chandra

International Conference on Software Engineering 2013

Experiments

Angelix was evaluated using GenProg ICSE'12 benchmark. Experimental data is available here. Summary of generated patches is available here.

Subject LoC Versions Repairs Avg. Time
Wireshark 2814K 7 4 23 min
Php 1046K 44 10 62 min
Gzip 491K 5 2 4 min
Gmp 145K 2 2 14 min
Libtiff 77K 24 10 14 min

Semfix

Semfix is the predecessor of Angelix. Taking advantage of the modular design of Angelix, we incorporated the algorithm of SemFix into Angelix. Using this new implementation of Semfix, we could reproduce the experimental results of the original Semfix. The experimental results and the scripts to reproduce the results are available here.

People

Principal investigator

Developers

Contributors (in alphabetical order)