Foundations and Trends® in Programming Languages > Vol 1 > Issue 4

A Framework For Efficient Modular Heap Analysis

Ravichandhran Madhavan, EPFL, Lausanne, Switzerland, ravi.kandhadai@epfl.ch G. Ramalingam, Microsoft Research, India, grama@microsoft.com Kapil Vaswani, Microsoft Research, India, kapilv@microsoft.com
 
Suggested Citation
Ravichandhran Madhavan, G. Ramalingam and Kapil Vaswani (2015), "A Framework For Efficient Modular Heap Analysis", Foundations and Trends® in Programming Languages: Vol. 1: No. 4, pp 269-381. http://dx.doi.org/10.1561/2500000020

Published: 19 Jan 2015
© 2015 R. Madhavan, G. Ramalingam, and K. Vaswani
 
Subjects
Design and Analysis of Algorithms,  Verification
 
Keywords
Program analysisPointer and heap analysis
 

Free Preview:

Article Help

Share

Download article
In this article:
1. Introduction
2. An Informal Overview
3. The Language and Concrete Semantics
4. The Analysis Framework
5. Parametric Abstract Semantics
6. Specializations of the Framework
7. Instances of the Framework
8. Experimental Results
9. Related Work and Conclusion
Appendices
References

Abstract

Modular heap analysis techniques analyze a program by computing summaries for every procedure in the program that describes its effects on an input heap, using pre-computed summaries for the called procedures. In this article, we focus on a family of modular heap analyses that summarize a procedure’s heap effects using a context-independent, shape-graph-like summary that is agnostic to the aliasing in the input heap. The analyses proposed by Whaley, Salcianu and Rinard, Buss et al., Lattner et al. and Cheng et al. belong to this family. These analyses are very efficient. But their complexity and the absence of a theoretical formalization and correctness proofs makes it hard to produce correct extensions and modifications of these algorithms (whether to improve precision or scalability or to compute more information). We present a modular heap analysis framework that generalizes these four analyses. We formalize our framework as an abstract interpretation and establish the correctness and termination guarantees. We formalize the four analyses as instances of the framework. The formalization explains the basic principle behind such modular analyses and simplifies the task of producing extensions and variations of such analyses. We empirically evaluate our framework using several real-world C# applications, under six different configurations for the parameters, and using three client analyses. The results show that the framework offers a wide range of analyses having different precision and scalability.

DOI:10.1561/2500000020
ISBN: 978-1-68083-002-6
128 pp. $85.00
Buy book
 
ISBN: 978-1-68083-003-3
128 pp. $125.00
Buy E-book
Table of contents:
1. Introduction
2. An Informal Overview
3. The Language and Concrete Semantics
4. The Analysis Framework
5. Parametric Abstract Semantics
6. Specializations of the Framework
7. Instances of the Framework
8. Experimental Results
9. Related Work and Conclusion
Appendices
References

A Framework For Efficient Modular Heap Analysis

Modular heap analysis techniques analyze a program by computing summaries for every procedure in the program that describes its effects on an input heap, using pre-computed summaries for the called procedures. In A Framework For Efficient Modular Heap Analysis, the focus is on a family of modular heap analyses that summarize a procedure’s heap effects using a context-independent, shape-graph-like summary that is agnostic to the aliasing in the input heap. These analyses are very efficient but their complexity and the absence of a theoretical formalization and correctness proofs makes it hard to produce correct extensions and modifications of these algorithms – whether to improve precision or scalability or to compute more information. A Framework For Efficient Modular Heap Analysis presents a modular heap analysis framework that generalizes these four analyses. It formalizes this framework as an abstract interpretation and establishes the correctness and termination guarantees. It formalizes the four analyses as instances of the framework. The formalization explains the basic principle behind such modular analyses and simplifies the task of producing extensions and variations of such analyses.

A Framework For Efficient Modular Heap Analysis is written with exceptional clarity and is a delightful read for program analysis experts and novices alike.

 
PGL-020