Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1569901.1570031acmconferencesArticle/Chapter ViewAbstractPublication PagesgeccoConference Proceedingsconference-collections
research-article

A genetic programming approach to automated software repair

Published: 08 July 2009 Publication History

Abstract

Genetic programming is combined with program analysis methods to repair bugs in off-the-shelf legacy C programs. Fitness is defined using negative test cases that exercise the bug to be repaired and positive test cases that encode program requirements. Once a successful repair is discovered, structural differencing algorithms and delta debugging methods are used to minimize its size. Several modifications to the GP technique contribute to its success: (1) genetic operations are localized to the nodes along the execution path of the negative test case; (2) high-level statements are represented as single nodes in the program tree; (3) genetic operators use existing code in other parts of the program, so new code does not need to be invented. The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.

References

[1]
]]A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools (second edition). Pearson Education, 2006.
[2]
]]R. Al-Ekram, A. Adma, and O. Baysal. diffX: an algorithm to detect changes in multi-version XML documents. In Conference of the Centre for Advanced Studies on Collaborative research, pages 1--11. IBM Press, 2005.
[3]
]]A. Arcuri. On the automation of fixing software bugs. In Proceedings of the Doctoral Symposium of the IEEE International Conference on Software Engineering, 2008.
[4]
]]A. Arcuri, D. R. White, J. Clark, and X. Yao. Multi-objective improvement of software using co-evolution and smart seeding. In Proceedings of the International Conference on Simulated Evolution And Learning, pages 61--70, 2008.
[5]
]]A. Arcuri and X. Yao. A novel co-evolutionary approach to automatic software bug fixing. In IEEE Congress on Evolutionary Computation, 2008.
[6]
]]T. Ball, M. Naik, and S. K. Rajamani. From symptom to cause: localizing errors in counterexample traces. SIGPLAN Not., 38(1):97--105, 2003.
[7]
]]T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In SPIN Workshop on Model Checking of Software, volume 2057 of Lecture Notes in Computer Science, pages 103--122, May 2001.
[8]
]]BBC News. Microsoft zune affected by 'bug'. In http://news.bbc.co.uk/2/hi/technology/7806683.stm, Dec. 2008.
[9]
]]T. V. Belle. Modularity and the Evolution of Software Evolvability. PhD thesis, University of New Mexico, Albuquerque, NM, 2004.
[10]
]]T. V. Belle and D. H. Ackley. Code factoring and the evolution of evolvability. In GECCO '02: Proceedings of the Genetic and Evolutionary Computation Conference, pages 1383--1390, San Francisco, CA, USA, 2002. Morgan Kaufmann Publishers Inc.
[11]
]]R. V. Binder. Testing object-oriented systems: models, patterns, and tools. Addison-Wesley Longman, 1999.
[12]
]]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 International Symposium on Software Testing and Analysis, pages 233--244, 2006.
[13]
]]B. Demsky and M. C. Rinard. Automatic data structure repair for self-healing systems. In Object-Oriented Programming, Systems, Languages, and Applications. 2003.
[14]
]]S. Forrest, S. A. Hofmeyr, A. Somayaji, and T. A. Longstaff. A sense of self for unix processes. In IEEE Symposium on Security and Privacy, pages 120--128, 1996.
[15]
]]M. Gabel and Z. Su. Symbolic mining of temporal specifications. In International Conference on Software Engineering, pages 51--60, 2008.
[16]
]]D. Hovemeyer and W. Pugh. Finding bugs is easy. In Companion to the conference on Object-oriented programming systems, languages, and applications, pages 132--136, 2004.
[17]
]]B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. In Programming Language Design and Implementation, June 9--11 2003.
[18]
]]G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. Cil: An infrastructure for C program analysis and transformation. In International Conference on Compiler Construction, pages 213--228, Apr. 2002.
[19]
]]T. M. Pigoski. Practical Software Maintenance: Best Practices for Managing Your Software Investment. John Wiley & Sons, 1996.
[20]
]]S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems, 15(4):391--411, 1997.
[21]
]]K. Walcott, M. Soffa, G. Kapfhammer, and R. Roos. Time-aware test suite prioritization. In International Symposium on Software Testing and Analysis, pages 1--12, 2006.
[22]
]]W. Weimer. Patches as better bug reports. In Generative Programming and Component Engineering, pages 181--190, 2006.
[23]
]]W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, 2009.
[24]
]]A. Zeller. Yesterday, my program worked. Today, it does not. Why? In Foundations of Software Engineering, pages 253--267, 1999.
[25]
]]A. Zeller and R. Hildebrandt. Simplifying and isolating failure-inducing input. IEEE Trans. Software Eng., 28(2):183--200, 2002.

Cited By

View all
  • (2025)GeQuPI: Quantum Program Improvement with Multi-Objective Genetic ProgrammingJournal of Systems and Software10.1016/j.jss.2024.112223219(112223)Online publication date: Jan-2025
  • (2024)C2D2: Extracting Critical Changes for Real-World Bugs with Dependency-Sensitive Delta DebuggingProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652129(300-312)Online publication date: 11-Sep-2024
  • (2024)ARJA-e for the First International Competition on Automated Program RepairProceedings of the 5th ACM/IEEE International Workshop on Automated Program Repair10.1145/3643788.3648019(50-52)Online publication date: 20-Apr-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
GECCO '09: Proceedings of the 11th Annual conference on Genetic and evolutionary computation
July 2009
2036 pages
ISBN:9781605583259
DOI:10.1145/1569901
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: 08 July 2009

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. genetic programming
  2. software engineering
  3. software repair

Qualifiers

  • Research-article

Conference

GECCO09
Sponsor:
GECCO09: Genetic and Evolutionary Computation Conference
July 8 - 12, 2009
Québec, Montreal, Canada

Acceptance Rates

Overall Acceptance Rate 1,669 of 4,410 submissions, 38%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)67
  • Downloads (Last 6 weeks)11
Reflects downloads up to 09 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2025)GeQuPI: Quantum Program Improvement with Multi-Objective Genetic ProgrammingJournal of Systems and Software10.1016/j.jss.2024.112223219(112223)Online publication date: Jan-2025
  • (2024)C2D2: Extracting Critical Changes for Real-World Bugs with Dependency-Sensitive Delta DebuggingProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652129(300-312)Online publication date: 11-Sep-2024
  • (2024)ARJA-e for the First International Competition on Automated Program RepairProceedings of the 5th ACM/IEEE International Workshop on Automated Program Repair10.1145/3643788.3648019(50-52)Online publication date: 20-Apr-2024
  • (2024)A Software Bug Fixing Approach Based on Knowledge-Enhanced Large Language Models2024 IEEE 24th International Conference on Software Quality, Reliability and Security (QRS)10.1109/QRS62785.2024.00026(169-179)Online publication date: 1-Jul-2024
  • (2024)A study of common bug fix patterns in RustEmpirical Software Engineering10.1007/s10664-023-10437-129:2Online publication date: 12-Feb-2024
  • (2024)Automatic program bug fixing by focusing on finding the shortest sequence of changesArtificial Intelligence Review10.1007/s10462-023-10686-y57:2Online publication date: 7-Feb-2024
  • (2024)Improving repair of semantic ATL errors using a social diversity metricSoftware and Systems Modeling10.1007/s10270-024-01170-4Online publication date: 18-Apr-2024
  • (2023)VulRep: vulnerability repair based on inducing commits and fixing commitsEURASIP Journal on Wireless Communications and Networking10.1186/s13638-023-02242-72023:1Online publication date: 21-Apr-2023
  • (2023)Improving Spectrum-Based Localization of Multiple Faults by Iterative Test Suite ReductionProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598148(1445-1457)Online publication date: 12-Jul-2023
  • (2023)CirFix: Automated Hardware Repair and its Real-World ApplicationsIEEE Transactions on Software Engineering10.1109/TSE.2023.326989949:7(3736-3752)Online publication date: Jul-2023
  • 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