Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Automated repair of binary and assembly programs for cooperating embedded devices

Published: 16 March 2013 Publication History
  • Get Citation Alerts
  • Abstract

    We present a method for automatically repairing arbitrary software defects in embedded systems, which have limited memory, disk and CPU capacities, but exist in great numbers. We extend evolutionary computation (EC) algorithms that search for valid repairs at the source code level to assembly and ELF format binaries, compensating for limited system resources with several algorithmic innovations. Our method does not require access to the source code or build toolchain of the software under repair, does not require program instrumentation, specialized execution environments, or virtual machines, or prior knowledge of the bug type.
    We repair defects in ARM and x86 assembly as well as ELF binaries, observing decreases of 86% in memory and 95% in disk requirements, with 62% decrease in repair time, compared to similar source-level techniques. These advances allow repairs previously possible only with C source code to be applied to any ARM or x86 assembly or ELF executable. Efficiency gains are achieved by introducing stochastic fault localization, with much lower overhead than comparable deterministic methods, and low-level program representations.
    When distributed over multiple devices, our algorithm finds repairs faster than predicted by naive parallelism. Four devices using our approach are five times more efficient than a single device because of our collaboration model. The algorithm is implemented on Nokia N900 smartphones, with inter-phone communication fitting in 900 bytes sent in 7 SMS text messages per device per repair on average.

    References

    [1]
    S. Adams. Google software updates: Courgette (design documents). http://dev.chromium.org/developers/design-documents/software-updates-courgette, 2011.
    [2]
    BBC News. Microsoft zune affected by 'bug'. In http://news.bbc.co.uk/2/hi/technology/7806683.stm, Dec. 2008.
    [3]
    M. Costa, J. Crowcroft, M. Castro, A. Rowstron, L. Zhou, L. Zhang, and P. Barham. Vigilante: End-to-end containment of internet worm epidemics. ACM Trans. Comput. Syst., 26 (4): 1--68, 2008. ISSN 0734-2071. http://doi.acm.org/10.1145/1455258.1455259.
    [4]
    C. Ebert and C. Jones. Embedded software: Facts, figures, and future. Computer, 42 (4): 42--52, 2009.
    [5]
    A. Eiben and J. Smith. Introduction to Evolutionary Computing. Springer, 2003.
    [6]
    F. Fernández, M. Tomassini, and L. Vanneschi. An empirical study of multipopulation genetic programming. Genetic Programming and Evolvable Machines, 4 (1): 21--51, 2003.
    [7]
    P. Ferrie. Malware analysis: Flibi night. Virus Bulletin, pages 4--5, March 2011.
    [8]
    J. Fitzpatrick. An interview with Steve Furber. Commun. ACM, 54: 34--39, May 2011. http://doi.acm.org/10.1145/1941487.1941501. URL http://doi.acm.org/10.1145/1941487.1941501.
    [9]
    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.
    [10]
    J. J. Grefenstette. Optimization of control parameters for genetic algorithms. IEEE Transactions on Systems, Man and Cybernetics, 16 (1): 122--128, 1986.
    [11]
    P. B. Grosso. Computer Simulations of Genetic Adaptation: Parallel Subcomponent Interaction in a Multilocus Model. PhD thesis, The University of Michigan, Ann Arbor, MI, 1985.
    [12]
    S. Harding. Genetic programming on graphics processing units bibliography. Memorial Univeristy, Canada, Feb. 9, 2010. http://www.gpgpgpu.com.
    [13]
    B. Harvey, J. A. Foster, and D. A. Frincke. Towards byte code genetic programming. In Genetic and evolutionary computing conference, page 1234, 1999.
    [14]
    J. H. Holland. Adaptation in Natural and Artificial Systems. MIT Press, Cambridge, MA, 1992. Second edition.
    [15]
    G. Jin, L. Song, W. Zhang, S. Lu, and B. Liblit. Automated atomicity-violation fixing. In Programming Language Design and Implementation, pages 389--400, 2011.
    [16]
    J. A. Jones and M. J. Harrold. Empirical evaluation of the tarantula automatic fault-localization technique. In Automated Software Engineering, pages 273--282, 2005. ISBN 1-59593-993-4. http://doi.acm.org/10.1145/1101908.1101949.
    [17]
    Z. Konfrst. Parallel genetic algorithms: Advances, computing trends, applications and perspectives. In Parallel and Distributed Processing Symposium. IEEE, 2004.
    [18]
    J. R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, 1992.
    [19]
    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. ISBN 3-540-43378-3.
    [20]
    C. Le 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 International Conference on Software Engineering, 2012.
    [21]
    J. Levon. OProfile Manual. Victoria University of Manchester, 2004.
    [22]
    A. Munawar, M. Wahib, M. Munetomo, and K. Akama. A survey: Genetic algorithms and the fast evolving world of parallel computing. In High Performance Computing and Communications, pages 897--902, 2008. ISBN 978-0-7695-3352-0. http://doi.ieeecomputersociety.org/10.1109/HPCC.2008.77.
    [23]
    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. ISBN 0-262-19423-6. URL http://www.aimlearning.com/aigp31.pdf.
    [24]
    C. Ofria, C. Adami, and T. C. Collier. Design of evolvable computer languages. IEEE Transactions on Evolutionary Computation, 6: 420--424, 2002.
    [25]
    M. Orlov and M. Sipper. Genetic programming in the wild: evolving unrestricted bytecode. In Genetic and evolutionary computation, pages 1043--1050, 2009. ISBN 978-1-60558-325-9.
    [26]
    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 Symposium on Operating Systems Principles, pages 87--102, October 2009.
    [27]
    E. Schulte, S. Forrest, and W. Weimer. Automated program repair through the evolution of assembly code. In Automated Software Engineering, pages 313--316, 2010.
    [28]
    R. C. Seacord, D. Plakosh, and G. A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. Addison-Wesley, 2003. ISBN 0321118847.
    [29]
    L. G. Shapiro, G. C. Stockman, L. G. Shapiro, and G. Stockman. Computer Vision. Prentice Hall, 2001. ISBN 0130307963.
    [30]
    Symantec. Internet security threat report. Technical report, http://eval.symantec.com/mktginfo/enterprise/white_papers/ent-whitepaper_symantec_internet_security_threat_report_x_09_2006.en-us.pdf, Sept. 2006.
    [31]
    S. Thomas. Taking the redpill: Artificial evolution in native x86 systems. http://spth.vxheavens.com/ArtEvol.html, October 2010.
    [32]
    P. Valencia. In situ genetic programming for wireless sensor networks. In SenSys Doctoral Colloquium, 2007.
    [33]
    Y. Wei, Y. Pei, C. A. Furia, L. S. Silva, S. Buchholz, B. Meyer, and A. Zeller. Automated fixing of programs with contracts. In International Symposium on Software Testing and Analysis, pages 61--72, 2010.
    [34]
    W. Weimer. Patches as better bug reports. In Generative Programming and Component Engineering, 2006.
    [35]
    and Forrest}icse09W. 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.
    [36]
    W. Weimer, S. Forrest, C. L. Goues, and T. Nguyen. Automatic program repair with evolutionary computation. Commun. ACM, 53 (5): 109--116, 2010.

    Cited By

    View all
    • (2022)On Technical Debt in Software Testing - Observations from IndustryLeveraging Applications of Formal Methods, Verification and Validation. Software Engineering10.1007/978-3-031-19756-7_17(301-323)Online publication date: 22-Oct-2022
    • (2023)Reassembly is hardProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620320(1469-1486)Online publication date: 9-Aug-2023
    • (2023)Causal Repair of Learning-Enabled Cyber-Physical Systems2023 IEEE International Conference on Assured Autonomy (ICAA)10.1109/ICAA58325.2023.00009(1-10)Online publication date: Jun-2023
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGARCH Computer Architecture News
    ACM SIGARCH Computer Architecture News  Volume 41, Issue 1
    ASPLOS '13
    March 2013
    540 pages
    ISSN:0163-5964
    DOI:10.1145/2490301
    Issue’s Table of Contents
    • cover image ACM Conferences
      ASPLOS '13: Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems
      March 2013
      574 pages
      ISBN:9781450318709
      DOI:10.1145/2451116
    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: 16 March 2013
    Published in SIGARCH Volume 41, Issue 1

    Check for updates

    Author Tags

    1. assembly code
    2. automated program repair
    3. bytecode
    4. evolutionary computation
    5. fault localization
    6. legacy software

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)33
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 27 Jul 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)On Technical Debt in Software Testing - Observations from IndustryLeveraging Applications of Formal Methods, Verification and Validation. Software Engineering10.1007/978-3-031-19756-7_17(301-323)Online publication date: 22-Oct-2022
    • (2023)Reassembly is hardProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620320(1469-1486)Online publication date: 9-Aug-2023
    • (2023)Causal Repair of Learning-Enabled Cyber-Physical Systems2023 IEEE International Conference on Assured Autonomy (ICAA)10.1109/ICAA58325.2023.00009(1-10)Online publication date: Jun-2023
    • (2023)Response to comments on “Jaws 30”Genetic Programming and Evolvable Machines10.1007/s10710-023-09474-y24:2Online publication date: 22-Nov-2023
    • (2022)START: A Framework for Trusted and Resilient Autonomous Vehicles (Practical Experience Report)2022 IEEE 33rd International Symposium on Software Reliability Engineering (ISSRE)10.1109/ISSRE55969.2022.00018(73-84)Online publication date: Oct-2022
    • (2021)Multiplicative Weights Algorithms for Parallel Automated Software Repair2021 IEEE International Parallel and Distributed Processing Symposium (IPDPS)10.1109/IPDPS49936.2021.00107(984-993)Online publication date: May-2021
    • (2021)Enhancing Genetic Improvement of Software with Regression Test Selection2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)10.1109/ICSE43902.2021.00120(1323-1333)Online publication date: May-2021
    • (2020)GEVOACM Transactions on Architecture and Code Optimization10.1145/341805517:4(1-28)Online publication date: 25-Nov-2020
    • (2020)GEVO-MLProceedings of the 2020 Genetic and Evolutionary Computation Conference Companion10.1145/3377929.3398139(1849-1856)Online publication date: 8-Jul-2020
    • (2020)Toward Better Evolutionary Program RepairACM Transactions on Software Engineering and Methodology10.1145/336000429:1(1-53)Online publication date: 30-Jan-2020
    • 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