skip to main content
10.1145/1858996.1859059acmconferencesArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
poster

Automated program repair through the evolution of assembly code

Published:20 September 2010Publication History

ABSTRACT

A method is described for automatically repairing legacy software at the assembly code level using evolutionary computation. The technique is demonstrated on Java byte code and x86 assembly programs, showing how to find program variations that correct defects while retaining desired behavior. Test cases are used to demonstrate the defect and define required functionality. The paper explores advantages of assembly-level repair over earlier work at the source code level - the ability to repair programs written in many different languages; and the ability to repair bugs that were previously intractable. The paper reports experimental results showing reasonable performance of assembly language repair even on non-trivial programs

References

  1. }}M. Dahm. Byte code engineering with the BCEL API. Technical report, Freie Universitäat Berlin, 2001.Google ScholarGoogle Scholar
  2. }}V. Dallmeier, A. Zeller, and B. Meyer. Generating fixes from object behavior anomalies. In Automated Software Engineering, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}S. Forrest, W. Weimer, T. Nguyen, and C. Le Goues. A genetic programming approach to automated software repair. In Genetic and Evolutionary Computing Conference, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. }}D. Geer, R. Bace, P. Gutmann, P. Metzger, C. Pfleeger, J. Quarterman, and B. Schneier. Cyber insecurity: The cost of monopoly. Technical report, Computer & Communications Industry Association, 2003.Google ScholarGoogle Scholar
  5. }}J. R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. }}F. Kühling, K. Wolff, and P. Nordin. Brute-force approach to automatic induction of machine code on CISC architectures. In European Conference on Genetic Programming, pages 288--297, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Producing wrong data without doing anything obviously wrong! In Architectural support for programming languages and operating systems, pages 265--276, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}P. Nordin, W. Banzhaf, and F. D. Francone. Efficient evolution of machine code for CISC architectures using instruction blocks and homologous crossover. In Advances in Genetic Programming 3, pages 275--299. June 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. }}M. Orlov and M. Sipper. Genetic programming in the wild: evolving unrestricted bytecode. In Genetic and evolutionary computation, pages 1043--1050, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}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 ACM Symposium on Operating Systems Principles, pages 87--102, October 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. }}W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, pages 364--367, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Automated program repair through the evolution of assembly code

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          ASE '10: Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering
          September 2010
          534 pages
          ISBN:9781450301169
          DOI:10.1145/1858996

          Copyright © 2010 ACM

          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]

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 20 September 2010

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • poster

          Acceptance Rates

          Overall Acceptance Rate82of337submissions,24%

          Upcoming Conference

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader