Execution Suppression: An Automated Iterative Technique for Locating Memory Errors

Dennis Jeffrey, Vijay Nagarajan, Rajiv Gupta, Neelam Gupta

Research output: Contribution to journalArticlepeer-review

Abstract / Description of output

By studying the behavior of several programs that crash due to memory errors, we observed that locating the errors can be challenging because significant propagation of corrupt memory values can occur prior to the point of the crash. In this article, we present an automated approach for locating memory errors in the presence of memory corruption propagation. Our approach leverages the information revealed by a program crash: when a crash occurs, this reveals a subset of the memory corruption that exists in the execution. By suppressing (nullifying) the effect of this known corruption during execution, the crash is avoided and any remaining (hidden) corruption may then be exposed by subsequent crashes. The newly exposed corruption can then be suppressed in turn. By iterating this process until no further crashes occur, the first point of memory corruption—and the likely root cause of the program failure—can be identified. However, this iterative approach may terminate prematurely, since programs may not crash even when memory corruption is present during execution. To address this, we show how crashes can be exposed in an execution by manipulating the relative ordering of particular variables within memory. By revealing crashes through this variable re-ordering, the effectiveness and applicability of the execution suppression approach can be improved. We describe a set of experiments illustrating the effectiveness of our approach in consistently and precisely identifying the first points of memory corruption in executions that fail due to memory errors. We also discuss a baseline software implementation of execution suppression that incurs an average overhead of 7.2x, and describe how to reduce this overhead to 1.8x through hardware support.
Original languageEnglish
Pages (from-to)17:1-17:36
Number of pages36
JournalACM Letters on Programming Languages and Systems
Volume32
Issue number5
DOIs
Publication statusPublished - 1 May 2010

Keywords / Materials (for Non-textual outputs)

  • Execution suppression, fault localization, hardware support, memory corruption propagation, memory errors, variable re-ordering

Fingerprint

Dive into the research topics of 'Execution Suppression: An Automated Iterative Technique for Locating Memory Errors'. Together they form a unique fingerprint.

Cite this