Efficient detection of all pointer and array access errors
- 1 June 1994
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM) in Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation - PLDI '94
- Vol. 29 (6), 290-301
- https://doi.org/10.1145/178243.178446
Abstract
We present a pointer and array access checking technique that provides complete error coverage through a simple set of program transformations. Our technique, based on an ex- tended safe pointer representation, has a number of novel aspects, Foremost, it is the first technique that detects all spatial and temporal access errors. Its use is not limited by the expressiveness of the language; that is, it can be ap- plied successfully to compiled or interpreted languages with subscripted and mutable pointers, local references, and ex- plicit and typeless dynamic storage management, e.g., C. Because it is a source level transformation, it is amenable to both compile- and run-time optimization. Finally, its per- formance, even without compile-time optimization, is quite good. We implemented a prototype translator for the C lan- guage and analyzed the checking overheads of six non-trivial, pointer intensive programs. Execution overheads range from 130% to 540%; with text and data size overheads typically below 100~0.Keywords
This publication has 8 references indexed in Scilit:
- Space efficient conservative garbage collectionPublished by Association for Computing Machinery (ACM) ,1993
- Efficient program tracingComputer, 1993
- Adding run‐time checking to the portable C compilerSoftware: Practice and Experience, 1992
- An empirical study of the reliability of UNIX utilitiesCommunications of the ACM, 1990
- A fresh look at optimizing array bound checkingPublished by Association for Computing Machinery (ACM) ,1990
- Garbage collection in an uncooperative environmentSoftware: Practice and Experience, 1988
- Integral-C—a practical environment for C programmingPublished by Association for Computing Machinery (ACM) ,1987
- The Implementation of Run-Time Diagnostics in PascalIEEE Transactions on Software Engineering, 1980