New tech report on memory access checking

Todd Austin <>
Thu, 2 Dec 1993 19:57:45 GMT

          From comp.compilers

Related articles
New tech report on memory access checking (Todd Austin) (1993-12-02)
| List of all articles for this month |

Newsgroups: comp.compilers
From: Todd Austin <>
Keywords: report, FTP, available, debug
Organization: Compilers Central
Date: Thu, 2 Dec 1993 19:57:45 GMT

A new technical report on pointer and array access checking is available
via anonymous ftp from "" in directory
"tech-reports/reports/93" in the file "". The file is a
compressed postscript file. If you do not have ftp access or a postscript
printer, send e-mail to We can e-mail postscript or
mail a hardcopy.

Best Regards,
Todd Austin
University of Wisconsin-Madison,

Title: "Efficient Detection of All Pointer and Array Access Errors"

Todd M. Austin, Scott E. Breach, and Gurindar S. Sohi
{austin, breach, sohi}
University of Wisconsin-Madison, Comp. Sci. Dept. TR #1197


In this paper, 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 extended 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
applied successfully to compiled or interpreted languages with subscripted
and mutable pointers, local references, and explicit 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
performance, even without compile-time optimization, is quite good. We
implemented a prototype translator for the C language 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%.

Table of Contents:

1.0 Introduction
2.0 Safe Pointers
3.0 Program Transformations
    3.1 Pointer Conversion
    3.2 Check Insertion
    3.3 Operator Conversion
    3.4 Run-Time Support
4.0 Implications of Complete Error Coverage
5.0 Optimizing Dereference Checks
    5.1 Run-Time Check Optimization
    5.2 Compile-Time Check Optimization
6.0 Experimental Evaluation
    6.1 Experimental Framework
    6.2 Analyzed Programs
    6.3 Results
7.0 Related Work
8.0 Conclusions

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.