Method for detecting computer memory access errors
Patent 5644709 Issued on July 1, 1997. Estimated Expiration Date: July 1, 2014. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
A method for detecting memory access errors which occur while executing a computer program. Spatial and temporal attributes are provided for a data object and these attributes are associated with each pointer to that data object. On a dereference to a pointer, a memory access check is performed which determines (a) whether the dereference falls outside the address range within which valid accesses may be made to the data object, and (b) whether the dereference falls outside the time period within which valid accesses may be made to the data object. If the dereference falls outside the valid address range, a spatial error is flagged. If the dereference falls outside the valid time period, a temporal error is flagged. In addition, a method is described for converting a preexisting source-language program file into a safe program and a method is described for optimizing memory-access checks.
Other References
Austin et al., "Efficient Detection of All Pointer and Array Access Errors", Sigplan 94, vol. 29, No.5, pp.290-301. Jun. 1994
Andrew Ginter, "Design Alternatives for a Cooperative Garbage Collector for the C++ Programming Language," Research Report No. 91/417/1, Department of Computer Science, University of Calgary, Jan. 1991
A.V. Aho, et al. Compilers: Principles, Techniques and Tools, Sec. 5.4, pp. 296-297, Addison-Wesley, Reading, MA 1986
Jonathan M. Asuru, "Optimization of Array Subscript Range Checks," pp. 109-118, ACM Letters on Programming Languages and Systems, Jun., 1992
Bowen Alpern, et al., "Detecting Equality of Variables in Programs," In Conference Record of the 15th Annual ACM Symposium on Principles of Programming Languages, pp. 1-11, San Diego, CA, Jan. 1988
Hans-Juergen Boehm, "Space Efficient Conservation Garbage Collection," Proceedings of the ACM SIGPLAN '93 Conference on Programming Language Design and Implementation, 28(6):197-204, Jun., 1993
Hans-Juergen Boehm, et al., "Garbage Collection in an Uncooperative Environment" Software-Pracitce and Experience, 18(9):807-820, Sep., 1988
John R. Ellis, et al. "Safe, Efficient Garbage Collection for C++," Report 102, DEC Systems Research Center, Jun., 1993
D.R. Edelson, et al. "Smart Pointers: They're Smart, but They're Not Pointers," Proceedings of the 1991 Usenix C+ Conference, Apr., 1991
Anthony J. Field, et al., "Memoization," Functional Programming, Chapter 19, pp. 505-506, Addison-Wesley Publishing Company, 1988
Charles N. Fischer, et al., "The Implementation of Run-Time Diagnostics in Pascal," IEEE Transactions on Software Engineering, SE-6(4):313-319, 1980
Andrew Ginter, Abstract, "Design Alternatives for a Cooperative Garbage Collector for the C++ Programming Language," Technical Report 91/417/01, Dept. of Computer Science, University of Calgary, 1992
Rajiv Gupta, "A Fresh Look at Optimization Array Bound Checking," Proceedings of the ACM SIGPLAN '90 Conference on Programming Language Design and Implementation, pp. 272-282, Jun., 1990
William H. Harrison, "Compiler Analysis of the Value Ranges for Variables," IEEE Transactions on Software Engineering, 3:(3):243-250, 1977
Reed Hastings, et al. "Purify:Fast Detection of Memory Leaks and Access Errors," Proceedings of the Winter Usenix Conference, 1992
Stephen Kaufer, et al., "Saber-C: An Interpreter-based Programming Environment for the C Language," Proceedings of the Summer Usenix Conference, pp.161-171, 1988
James R. Larus, "Efficient Program Tracing," IEEE Computer, 26(5):52-61, May, 1993
Peter A. Steenkiste, "The Impliementation of Tags and Run-Time Checking," Topics in Advanced Language Implementation, The MIT Press, Cambridge, MA 1991
Barton P. Miller, et al., "An Empirical Study of the Reliability of UNIX Utilities," Communications of the ACM, 33(12):32-44, Dec., 1990
Graham Ross, "Integral C--A Practical Environment for C Programming," Proceedings of the ACM SIG-Sof/SIGPLAN Software Engineering Symposium on Practical Software Development Environments(SIGPLAN Notices), pp. 42-48, Association for Computing Machinery, Jan., 1987
Barry K. Rosen, et al., "Global Value Numbers and Redundant Computations," Conference Record of the 15th Annual ACM Symposium on Practical Software Development Environments (SIGPLAN Notices), pp. 12-27, San Diego, CA, Jan. 1988
Mark Sullivan, et al., "Software Defects and Their Impact on System Availability--A Study of Field Failures in Operating Systems," Digest of the 21st International Symposium on Fault Tolerant Computing, pp. 2-9, Jun. 1991
Joseph L. Steffen, "Adding Run-time Checking to the Portable C Compiler," Software--Practice and Experience, 22(4):305-316, 1992
Benjamin Zorn, et al., "A Memory Allocation Profile for C and Lisp Programs," Proceedings of the Summer Usenix Conference, pp. 223-237, 1988
Samuel C. Kendall, "Bcc: Runtime Checking for C Programs," USENIX Software Tool