← Back to Patent Explorer
US5644709A Expired / Lapsed US ⏱️ 0.0 years remaining

Method for detecting computer memory access errors

Assignee: Wisconsin Alumni Research Foundation
•
Filing: 1994-04-21
•
Granted: 1997-07-01
•
Expires: 2014-04-21
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract 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.

Inventors

  • 👤 Todd Michael Austin

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 01:31
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/36; G06F11/362; G06F11/366

Claims Analysis

Total Claims: 24
Claim 1
Independent Claim 183 words
A method for detecting memory access errors which occur while executing a computer program, wherein the computer program includes a pointer to a data object, said method comprising the steps of: providing a spatial attribute for said data object, said spatial attribute defining an address space within which valid accesses may be made to said data object; associating said spatial attribute with said pointer; providing a temporal attribute for said data object, said temporal attribute defining a period of time within which valid accesses may be made to said data object, wherein the step of providing said temporal attribute comprises the steps of: providing a temporal validity number having a temporal validity number location; and providing a temporal capability number; associating said temporal capability number with said pointer; providing a dereference to said pointer; determining if said dereference falls outside said address space; if said dereference falls outside said address space, flagging a spatial error; determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and if a temporal error has occurred, flagging said temporal error.
Claim 2
Independent Claim 183 words
A method for detecting memory access errors which occur while executing a computer program, wherein the computer program includes a pointer to a data object, said method comprising the steps of: providing a spatial attribute for said data object, said spatial attribute defining an address space within which valid accesses may be made to said data object; associating said spatial attribute with said pointer; providing a temporal attribute for said data object, said temporal attribute defining a period of time within which valid accesses may be made to said data object, wherein the step of providing said temporal attribute comprises the steps of: providing a temporal validity number having a temporal validity number location; and providing a temporal capability number; associating said temporal capability number with said pointer; providing a dereference to said pointer; determining if said dereference falls outside said address space; if said dereference falls outside said address space, flagging a spatial error; determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and if a temporal error has occurred, flagging said temporal error.
Claim 3
Dependent Claim 27 words
The method according to claim 1, wherein the step of providing a spatial attribute comprises the step of providing a size attribute indicative of said address space.
Claim 4
Dependent Claim 28 words
The method according to claim 2, wherein the step of providing a spatial attribute further comprises the step of providing an address attribute indicative of a base address.
Claim 5
Dependent Claim 52 words
The method according to claim 1, wherein said address space has a lower bound and an upper bound and wherein the step of providing a spatial attribute comprises the steps of: providing a low-end address attribute indicative of said lower bound; and providing a high-end address attribute indicative of said higher bound.
Claim 6
Dependent Claim 24 words
The method according to claim 1, wherein the step of providing a temporal attribute further comprises the step of providing a storage class attribute.
Claim 7
Dependent Claim 29 words
The method according to claim 5, wherein the step of providing a storage class attribute comprises the step of specifying storage classes which distinguish heap and local data objects.
Claim 8
Dependent Claim 27 words
The method according to claim 6, wherein the step of providing a spatial attribute comprises the step of providing a size attribute indicative of the address space.
Claim 9
Dependent Claim 28 words
The method according to claim 7, wherein the step of providing a spatial attribute further comprises the step of providing an address attribute indicative of a base address.
Claim 10
Dependent Claim 52 words
The method according to claim 6, wherein said address space has a lower bound and an upper bound and wherein the step of providing a spatial attribute comprises the steps of: providing a low-end address attribute indicative of said lower bound; and providing a high-end address attribute indicative of said higher bound.
Claim 11
Independent Claim 162 words
A method of detecting a memory access error encountered when executing program code including a pointer pointing to a variable, the method comprising the steps of: assigning temporal attributes defining temporal status for said pointer, wherein the step of assigning temporal attributes comprises the steps of: providing a temporal validity number associated with said variable; providing a temporal capability number; and associating said temporal capability number with said pointer; assigning spatial attributes defining an address space valid for said pointer; executing a memory access check on a memory access, wherein the step of executing a memory access check comprises the steps of: determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and determining whether said memory access is to an address within said valid address space; if a temporal status has occurred, flagging said temporal error; and if said memory access is to an address outside said valid address space, flagging a spatial error.
Claim 12
Independent Claim 162 words
A method of detecting a memory access error encountered when executing program code including a pointer pointing to a variable, the method comprising the steps of: assigning temporal attributes defining temporal status for said pointer, wherein the step of assigning temporal attributes comprises the steps of: providing a temporal validity number associated with said variable; providing a temporal capability number; and associating said temporal capability number with said pointer; assigning spatial attributes defining an address space valid for said pointer; executing a memory access check on a memory access, wherein the step of executing a memory access check comprises the steps of: determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and determining whether said memory access is to an address within said valid address space; if a temporal status has occurred, flagging said temporal error; and if said memory access is to an address outside said valid address space, flagging a spatial error.
Claim 13
Dependent Claim 30 words
The method according to claim 10 wherein the step of determining whether a temporal error has occurred comprises the step of accessing said temporal validity number through a hash table.
Claim 14
Dependent Claim 69 words
The method according to claim 10 wherein the temporal validity number has a temporal validity number location; wherein the step of assigning temporal attributes further comprises the steps of: providing a backpointer specifying said temporal validity number location; and associating said backpointer with said pointer; and wherein the step of determining whether a temporal error has occurred comprises the step of accessing said temporal validity number via said backpointer.
Claim 15
Independent Claim 234 words
A method for detecting memory access errors which occur while executing a computer program, wherein the computer program includes a pointer to a data object, the method comprising the steps of: providing a counter having a count for tracking memory deallocations; providing a spatial attribute for said data object, said spatial attribute defining an address space within which valid accesses may be made to said data object; associating said spatial attribute with said pointer; associating said temporal attribute with said pointer; providing a temporal attribute for said data object, wherein the step of providing said temporal attribute comprises the steps of: providing a temporal validity number having a temporal validity number location; and providing a temporal capability number; associating said temporal capability number with said pointer; providing a first dereference and a second dereference to said pointer wherein said first dereference occurs prior to said second dereference; determining if said second dereference falls outside said address space; if said second dereference falls outside said address space, flagging a spatial error; determining if said count has changed since said fast dereference; and if said count has changed since said first dereference, verifying said temporal attributes, wherein the step of verifying said temporal attributes comprises the steps of: determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and if a temporal error has occurred, flagging said temporal error.
Claim 16
Independent Claim 234 words
A method for detecting memory access errors which occur while executing a computer program, wherein the computer program includes a pointer to a data object, the method comprising the steps of: providing a counter having a count for tracking memory deallocations; providing a spatial attribute for said data object, said spatial attribute defining an address space within which valid accesses may be made to said data object; associating said spatial attribute with said pointer; associating said temporal attribute with said pointer; providing a temporal attribute for said data object, wherein the step of providing said temporal attribute comprises the steps of: providing a temporal validity number having a temporal validity number location; and providing a temporal capability number; associating said temporal capability number with said pointer; providing a first dereference and a second dereference to said pointer wherein said first dereference occurs prior to said second dereference; determining if said second dereference falls outside said address space; if said second dereference falls outside said address space, flagging a spatial error; determining if said count has changed since said fast dereference; and if said count has changed since said first dereference, verifying said temporal attributes, wherein the step of verifying said temporal attributes comprises the steps of: determining from said temporal capability number and said temporal validity number whether a temporal error has occurred; and if a temporal error has occurred, flagging said temporal error.
Claim 17
Dependent Claim 31 words
The method according to claim 13 wherein the step of providing a temporal attribute further comprises the step of providing a storage class attribute which distinguishes heap and local data objects.
Claim 18
Independent Claim 114 words
A system for detecting a memory access error in a computer program executing on a computer, the system comprising: means for assigning object attributes to a pointer, wherein said object attributes comprise: a temporal capability number; and a spatial attribute defining an address space valid for said pointer; means for assigning a temporal validity number; means for adding memory access check instructions to said computer program, wherein said memory access check instructions comprise: instructions which determine from said temporal capability number and said temporal validity number whether a temporal error has occurred; and instructions which determine whether a memory access made within said computer program is to an address within said valid address space.
Claim 19
Independent Claim 114 words
A system for detecting a memory access error in a computer program executing on a computer, the system comprising: means for assigning object attributes to a pointer, wherein said object attributes comprise: a temporal capability number; and a spatial attribute defining an address space valid for said pointer; means for assigning a temporal validity number; means for adding memory access check instructions to said computer program, wherein said memory access check instructions comprise: instructions which determine from said temporal capability number and said temporal validity number whether a temporal error has occurred; and instructions which determine whether a memory access made within said computer program is to an address within said valid address space.
Claim 20
Dependent Claim 30 words
The system according to claim 15 wherein the instructions for determining whether a temporal error has occurred comprise an instruction for accessing said temporal validity number through a hash table.
Claim 21
Dependent Claim 61 words
The system according to claim 15 wherein: the temporal validity number has a temporal validity number location; the temporal attributes further include a backpointer specifying said temporal validity number location, wherein said backpointer is associated with said pointer; and the instructions for determining whether a temporal error has occurred comprise an instruction for accessing said temporal validity number via said backpointer.
Claim 22
Dependent Claim 31 words
The system according to claim 15 wherein the instructions for determining whether a temporal error has occurred comprise an instruction for determining whether a temporal memory access check can be elided.
Claim 23
Dependent Claim 31 words
The system according to claim 15 wherein the instructions for determining whether a spatial error has occurred comprise an instruction for determining whether a spatial memory access check can be elided.
Claim 24
Dependent Claim 31 words
The system according to claim 15 wherein the means for adding memory access check instructions to said computer program comprise means for determining whether a memory access check can be elided.

References Cited (Backward Citations)

US4903194A Cited
US5193180A Cited
US5335344A Cited
US5388254A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-06-30 2000-12-30 2001-07-01 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-06-30 2004-12-30 2005-07-01 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-06-30 2008-12-30 2009-07-01 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag