HeapMD: Identifying heap-based bugs using anomaly detection

Trishul M. Chilimbi, Vinod Ganapathy

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

17 Scopus citations

Abstract

We present the design, implementation, and evaluation of HeapMD, a dynamic analysis tool that finds heap-based bugs using anomaly detection. HeapMD is based upon the observation that, in spite of the evolving nature of the heap, several of its properties remain stable. HeapMD uses this observation in a novel way: periodically, during the execution of the program, it computes a suite of metrics which are sensitive to the state of the heap. These metrics track heap behavior, and the stability of the heap reflects quantitatively in the values of these metrics. The "normal" ranges of stable metrics, obtained by running a program on multiple inputs, are then treated as indicators of correct behaviour, and are used in conjunction with an anomaly detector to find heap-based bugs. Using HeapMD, we were able to find 40 heap-based bugs, 31 of them previously unknown, in 5 large, commercial applications.

Original languageEnglish (US)
Title of host publicationASPLOS XII
Subtitle of host publicationTwelfth International Conference on Architectural Support for Programming Languages and Operating Systems
Pages219-228
Number of pages10
DOIs
Publication statusPublished - Dec 1 2006
Externally publishedYes

Publication series

NameInternational Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS

    Fingerprint

All Science Journal Classification (ASJC) codes

  • Software
  • Information Systems
  • Hardware and Architecture

Keywords

  • Anomaly detection
  • Bugs
  • Debugging
  • Heap
  • Metrics

Cite this

Chilimbi, T. M., & Ganapathy, V. (2006). HeapMD: Identifying heap-based bugs using anomaly detection. In ASPLOS XII: Twelfth International Conference on Architectural Support for Programming Languages and Operating Systems (pp. 219-228). (International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS). https://doi.org/10.1145/1168857.1168885