skip to main content
research-article

Angelix: scalable multiline program patch synthesis via symbolic analysis

Published: 14 May 2016 Publication History

Abstract

Since debugging is a time-consuming activity, automated program repair tools such as GenProg have garnered interest. A recent study revealed that the majority of GenProg repairs avoid bugs simply by deleting functionality. We found that SPR, a state-of-the-art repair tool proposed in 2015, still deletes functionality in their many "plausible" repairs. Unlike generate-and-validate systems such as GenProg and SPR, semantic analysis based repair techniques synthesize a repair based on semantic information of the program. While such semantics-based repair methods show promise in terms of quality of generated repairs, their scalability has been a concern so far. In this paper, we present Angelix, a novel semantics-based repair method that scales up to programs of similar size as are handled by search-based repair tools such as GenProg and SPR. This shows that Angelix is more scalable than previously proposed semantics based repair methods such as SemFix and DirectFix. Furthermore, our repair method can repair multiple buggy locations that are dependent on each other. Such repairs are hard to achieve using SPR and GenProg. In our experiments, Angelix generated repairs from large-scale real-world software such as wireshark and php, and these generated repairs include multi-location repairs. We also report our experience in automatically repairing the well-known Heartbleed vulnerability.

References

[1]
The heartbleed bug. http://heartbleed.com, 2014.
[2]
M. Bland. https://code.google.com/p/mike-bland/source/browse/heartbleed/, 2015.
[3]
M. Böhme and A. Roychoudhury. Corebench: Studying complexity of regression errors. In ISSTA, pages 105--115, 2014.
[4]
C. Cadar, D. Dunbar, and D. R. Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In OSDI, pages 209--224, 2008.
[5]
M. Carbin, S. Misailovic, M. Kling, and M. C. Rinard. Detecting and escaping infinite loops with Jolt. In ECOOP, pages 609--633, 2011.
[6]
S. Chandra, E. Torlak, S. Barman, and R. Bodik. Angelic debugging. In ICSE, pages 121--130, 2011.
[7]
M. Y. Chen, E. Kiciman, E. Fratkin, A. Fox, and E. Brewer. Pinpoint: Problem determination in large, dynamic internet services. In DSN, pages 595--604, 2002.
[8]
F. Demarco, J. Xuan, D. L. Berre, and M. Monperrus. Automatic repair of buggy if conditions and missing preconditions with SMT. In CSTVA, pages 30--39, 2014.
[9]
B. Demsky, M. D. Ernst, P. J. Guo, S. McCamant, J. H. Perkins, and M. Rinard. Inference and enforcement of data structure consistency specifications. In ISSTA, pages 233--244, 2006.
[10]
B. Elkarablieh and S. Khurshid. Juzi: a tool for repairing complex data structures. In ICSE, pages 855--858, 2008.
[11]
Q. Gao, H. Zhang, J. Wang, Y. Xiong, L. Zhang, and H. Mei. Fixing recurring crash bugs via analyzing Q&A sites. In ASE, pages 307--318, 2015.
[12]
D. Gopinath, M. Z. Malik, and S. Khurshid. Specification-based program repair using SAT. In TACAS, pages 173--188, 2011.
[13]
C. L. Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. GenProg ICSE2012 benchmark. http://dijkstra.cs.virginia.edu/genprog/resources/genprog-icse2012-benchmarks/, 2012.
[14]
C. L. Goues, M. Dewey-Vogt, S. Forrest, and W. Weimer. A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each. In ICSE, pages 3--13, 2012.
[15]
C. L. Goues, N. Holtschulte, E. K. Smith, Y. Brun, P. Devanbu, S. Forrest, and W. Weimer. The ManyBugs and IntroClass benchmarks for automated repair of C programs. IEEE TSE, 41(12):1236--1256, 2015.
[16]
H. He and N. Gupta. Automated debugging using path-based weakest preconditions. In FASE, pages 267--280, 2004.
[17]
S. Jha, S. Gulwani, S. A. Seshia, and A. Tiwari. Oracle-guided component-based program synthesis. In ICSE, pages 215--224, 2010.
[18]
G. Jin, L. Song, W. Zhang, S. Lu, and B. Liblit. Automated atomicity-violation fixing. In PLDI, pages 389--400, 2011.
[19]
B. Jobstmann, A. Griesmayer, and R. Bloem. Program repair as a game. In CAV, pages 226--238, 2005.
[20]
S. Kaleeswaran, V. Tulsian, A. Kanade, and A. Orso. Minthint: Automated synthesis of repair hints. In ICSE, pages 266--276, 2014.
[21]
D. Kim, J. Nam, J. Song, and S. Kim. Automatic patch generation learned from human-written patches. In ICSE, pages 802--811, 2013.
[22]
R. Könighofer and R. Bloem. Automated error localization and correction for imperative programs. In FMCAD, pages 91--100, 2011.
[23]
F. Long and M. Rinard. Staged program repair with condition synthesis. In ESEC-FSE, pages 166--178, 2015.
[24]
S. Mechtaev, J. Yi, and A. Roychoudhury. Directfix: Looking for simple program repairs. In ICSE, pages 448--458, 2015.
[25]
M. Monperrus. A critical review of "Automatic Patch Generation Learned from Human-written Patches": Essay on the problem statement and the evaluation of automatic software repair. In ICSE, pages 234--242, 2014.
[26]
H. D. T. Nguyen, D. Qi, A. Roychoudhury, and S. Chandra. Semfix: Program repair via semantic analysis. In ICSE, pages 772--781. IEEE Press, 2013.
[27]
G. Novark, E. D. Berger, and B. G. Zorn. Exterminator: Automatically correcting memory errors with high probability. Commun. ACM, 51(12):87--95, 2008.
[28]
A. Orso and G. Rothermel. Software testing: A research travelogue (2000-2014). In FOSE, pages 117--132, 2014.
[29]
Y. Pei, C. A. Furia, M. Nordio, Y. Wei, B. Meyer, and A. Zeller. Automated fixing of programs with contracts. IEEE Trans. Software Eng., 40(5):427--449, 2014.
[30]
J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In SOSP, pages 87--102, 2009.
[31]
Y. Qi, X. Mao, Y. Lei, Z. Dai, and C. Wang. The strength of random search on automated program repair. In ICSE, pages 254--265, 2014.
[32]
Y. Qi, X. Mao, Y. Lei, and C. Wang. Using automated program repair for evaluating the effectiveness of fault localization techniques. In ISSTA, pages 191--201, 2013.
[33]
Z. Qi, F. Long, S. Achour, and M. Rinard. An analysis of patch plausibility and correctness for generate-and-validate patch generation systems. In ISSTA, pages 24--36. ACM, 2015.
[34]
H. Samimi, E. D. Aung, and T. Millstein. Falling back on executable specifications. In ECOOP, pages 552--576, 2010.
[35]
H. Samimi, M. Schäfer, S. Artzi, T. Millstein, F. Tip, and L. Hendren. Automated repair of HTML generation errors in PHP applications using string constraint solving. In ICSE, pages 277--287, 2012.
[36]
S. Sidiroglou and A. D. Keromytis. Countering network worms through automatic patch generation. IEEE Security and Privacy, 3(6):41--49, 2005.
[37]
A. Smirnov and T. cker Chiueh. DIRA: automatic detection, identification and repair of control-hijacking attacks. In NDSS, 2005.
[38]
E. K. Smith, E. T. Barr, C. Le Goues, and Y. Brun. Is the cure worse than the disease? Overfitting in automated program repair. In FSE, pages 532--543, 2015.
[39]
S. H. Tan and A. Roychoudhury. relifix: Automated repair of software regressions. In ICSE, pages 471--482, 2015.
[40]
W. Weimer, Z. P. Fry, and S. Forrest. Leveraging program equivalence for adaptive program repair: Models and first results. In ASE, pages 356--366, 2013.

Cited By

View all
  • (2024)Evolving Paradigms in Automated Program Repair: Taxonomy, Challenges, and OpportunitiesACM Computing Surveys10.1145/369645057:2(1-43)Online publication date: 10-Oct-2024
  • (2024)Enhancing the Efficiency of Automated Program Repair via Greybox AnalysisProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695602(1719-1731)Online publication date: 27-Oct-2024
  • (2024)FastFixer: An Efficient and Effective Approach for Repairing Programming AssignmentsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695062(669-680)Online publication date: 27-Oct-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '16: Proceedings of the 38th International Conference on Software Engineering
May 2016
1235 pages
ISBN:9781450339001
DOI:10.1145/2884781
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 14 May 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. angelic forest
  2. multiline patch
  3. program repair
  4. scalable semantics-based repair

Qualifiers

  • Research-article

Funding Sources

Conference

ICSE '16
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)165
  • Downloads (Last 6 weeks)16
Reflects downloads up to 23 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Evolving Paradigms in Automated Program Repair: Taxonomy, Challenges, and OpportunitiesACM Computing Surveys10.1145/369645057:2(1-43)Online publication date: 10-Oct-2024
  • (2024)Enhancing the Efficiency of Automated Program Repair via Greybox AnalysisProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695602(1719-1731)Online publication date: 27-Oct-2024
  • (2024)FastFixer: An Efficient and Effective Approach for Repairing Programming AssignmentsProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695062(669-680)Online publication date: 27-Oct-2024
  • (2024)Automatic Repair of Quantum Programs via Unitary OperationACM Transactions on Software Engineering and Methodology10.1145/366460433:6(1-43)Online publication date: 28-Jun-2024
  • (2024)Detecting, Creating, Repairing, and Understanding Indivisible Multi-Hunk BugsProceedings of the ACM on Software Engineering10.1145/36608281:FSE(2747-2770)Online publication date: 12-Jul-2024
  • (2024)BatFix: Repairing language model-based transpilationACM Transactions on Software Engineering and Methodology10.1145/365866833:6(1-29)Online publication date: 27-Jun-2024
  • (2024)AutoCodeRover: Autonomous Program ImprovementProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680384(1592-1604)Online publication date: 11-Sep-2024
  • (2024)One Size Does Not Fit All: Multi-granularity Patch Generation for Better Automated Program RepairProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680381(1554-1566)Online publication date: 11-Sep-2024
  • (2024)ThinkRepair: Self-Directed Automated Program RepairProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680359(1274-1286)Online publication date: 11-Sep-2024
  • (2024)BRAFAR: Bidirectional Refactoring, Alignment, Fault Localization, and Repair for Programming AssignmentsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680326(856-868)Online publication date: 11-Sep-2024
  • Show More Cited By

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media