Detecting memory errors via static pointer analysis (preliminary experience)
- 1 July 1998
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 33 (7) , 27-34
- https://doi.org/10.1145/277633.277637
Abstract
Programs which manipulate pointers are hard to debug. Pointer analysis algorithms (originally aimed at optimizing compilers) may provide some remedy by identifying potential errors such as dereferencing NULL pointers by statically analyzing the behavior of programs on all their input data.Our goal is to identify the "core program analysis techniques" that can be used when developing realistic tools which detect memory errors at compile time without, generating too many false alarms. Our preliminary experience indicates that the following techniques are necessary: (i) finding aliases between pointers, (ii) flow sensitive techniques that account, for the program control flow constructs. (iii) partial interpretation of conditional statements, (iv) analysis of the relationships between pointers, and sometimes (v) analysis of the underlying data structures manipulated by the C program.We show that a combination of these techniques can yield better results than those achieved by state of the art tools. Yet it is not clear to us whether our ideas are applicable to large programs.Keywords
This publication has 10 references indexed in Scilit:
- Solving shape-analysis problems in languages with destructive updatingACM Transactions on Programming Languages and Systems, 1998
- Automatic verification of pointer programs using monadic second-order logicPublished by Association for Computing Machinery (ACM) ,1997
- Fast and accurate flow-insensitive points-to analysisPublished by Association for Computing Machinery (ACM) ,1997
- Static detection of dynamic memory errorsPublished by Association for Computing Machinery (ACM) ,1996
- Points-to analysis in almost linear timePublished by Association for Computing Machinery (ACM) ,1996
- Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in CPublished by Association for Computing Machinery (ACM) ,1996
- Semantic models and abstract interpretation techniques for inductive data structures and pointersPublished by Association for Computing Machinery (ACM) ,1995
- Abstractions for recursive pointer data structuresPublished by Association for Computing Machinery (ACM) ,1992
- Analysis of pointers and structuresPublished by Association for Computing Machinery (ACM) ,1990
- Systematic design of program analysis frameworksPublished by Association for Computing Machinery (ACM) ,1979