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
Y1 - 2013
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
T3 - International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS
SP - 317
EP - 327
BT - ASPLOS 2013 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems
T2 - 18th International Conference on Architectural Support for Programming Languages and Operating Systems, ASPLOS 2013
Y2 - 16 March 2013 through 20 March 2013
ER -