Automated repair of binary and assembly programs for cooperating embedded devices

Eric Schulte, Jonathan Dilorenzoy, Westley Weimer, Stephanie Forrest

Research output: Chapter in Book/Report/Conference proceedingConference contribution

19 Citations (Scopus)

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 näive 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.

Original languageEnglish (US)
Title of host publicationASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems
Pages317-327
Number of pages11
DOIs
StatePublished - Apr 5 2013
Externally publishedYes
Event18th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2013 - Houston, TX, United States
Duration: Mar 16 2013Mar 20 2013

Other

Other18th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2013
CountryUnited States
CityHouston, TX
Period3/16/133/20/13

Fingerprint

Program assemblers
Repair
Data storage equipment
Defects
Smartphones
Embedded systems
Evolutionary algorithms
Program processors
Innovation
Communication

Keywords

  • Assembly code
  • Automated program repair
  • Bytecode
  • Evolutionary computation
  • Fault localization
  • Legacy software

ASJC Scopus subject areas

  • Software
  • Information Systems
  • Hardware and Architecture

Cite this

Schulte, E., Dilorenzoy, J., Weimer, W., & Forrest, S. (2013). Automated repair of binary and assembly programs for cooperating embedded devices. In ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems (pp. 317-327) https://doi.org/10.1145/2451116.2451151

Automated repair of binary and assembly programs for cooperating embedded devices. / Schulte, Eric; Dilorenzoy, Jonathan; Weimer, Westley; Forrest, Stephanie.

ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems. 2013. p. 317-327.

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Schulte, E, Dilorenzoy, J, Weimer, W & Forrest, S 2013, Automated repair of binary and assembly programs for cooperating embedded devices. in ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems. pp. 317-327, 18th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2013, Houston, TX, United States, 3/16/13. https://doi.org/10.1145/2451116.2451151
Schulte E, Dilorenzoy J, Weimer W, Forrest S. Automated repair of binary and assembly programs for cooperating embedded devices. In ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems. 2013. p. 317-327 https://doi.org/10.1145/2451116.2451151
Schulte, Eric ; Dilorenzoy, Jonathan ; Weimer, Westley ; Forrest, Stephanie. / Automated repair of binary and assembly programs for cooperating embedded devices. ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems. 2013. pp. 317-327
@inproceedings{d09e3246f225474a9f7ee1b9e97b3e43,
title = "Automated repair of binary and assembly programs for cooperating embedded devices",
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 n{\"a}ive 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.",
keywords = "Assembly code, Automated program repair, Bytecode, Evolutionary computation, Fault localization, Legacy software",
author = "Eric Schulte and Jonathan Dilorenzoy and Westley Weimer and Stephanie Forrest",
year = "2013",
month = "4",
day = "5",
doi = "10.1145/2451116.2451151",
language = "English (US)",
isbn = "9781450318709",
pages = "317--327",
booktitle = "ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems",

}

TY - GEN

T1 - Automated repair of binary and assembly programs for cooperating embedded devices

AU - Schulte, Eric

AU - Dilorenzoy, Jonathan

AU - Weimer, Westley

AU - Forrest, Stephanie

PY - 2013/4/5

Y1 - 2013/4/5

N2 - 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 näive 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.

AB - 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 näive 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.

KW - Assembly code

KW - Automated program repair

KW - Bytecode

KW - Evolutionary computation

KW - Fault localization

KW - Legacy software

UR - http://www.scopus.com/inward/record.url?scp=84875648054&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=84875648054&partnerID=8YFLogxK

U2 - 10.1145/2451116.2451151

DO - 10.1145/2451116.2451151

M3 - Conference contribution

AN - SCOPUS:84875648054

SN - 9781450318709

SP - 317

EP - 327

BT - ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems

ER -