IP Library › Granted Patent US 8,516,450
Granted Patent B2
US 8,516,450 · App. 12/727,803 · Granted Aug 20, 2013

Detecting real-time invalid memory references

Inventor: Balasubramanian Narasimhan (Santa Clara, CA)
Assignee: Oracle International Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,516,450
App. No.
12/727,803
Granted
Aug 20, 2013
Kind
B2
Abstract

A method, system, and computer program product for identifying invalid memory references. In one embodiment, invalid memory references are identified as they occur. In another embodiment, the invalid memory references are identified within a customized operating system that runs within an application.

Claims (104)

1. A computer-implemented method comprising:

allocating a portion of a shared memory, to a first process;

storing a first counter responsive to successive accesses by any process to the portion of the shared memory; and

detecting, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, occurrence of an invalid memory reference to the portion of the shared memory caused by an access by the second process, based on at least one of:

comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory; or

comparison of the first counter with a third counter responsive to successive accesses by the second process to the portion of the shared memory.

2. The method of claim 1 wherein:

an intermittent increment in the first counter between successive accesses made by the first process is caused at least by the access by the second process.

3. The method of claim 1 further comprising:

intercepting the accesses to the portion of the shared memory, to determine whether the invalid memory reference will occur.

4. The method of claim 1 further comprising:

releasing, from the first process, at least one address from the portion of the shared memory;

reallocating said at least one address; and

detecting occurrence of an illegal access to said at least one address by the first process.

5. The method of claim 1 wherein:

the access by the second process is caused by an event selected from the group consisting of: a memory overrun, a memory underrun, and a stale pointer.

6. The method of claim 1 further comprising:

terminating the second process responsive to detection of occurrence of the invalid memory reference.

7. The method of claim 1 further comprising:

outputting a notification regarding the invalid memory reference in executing a current instruction, prior to executing another instruction.

8. The method of claim 1 wherein said portion is hereinafter a first portion, the method further comprising:

allocating a second portion of physical memory by a first operating system to a second operating system; and

spawning processes within the second operating system, the second operating system being comprised in a database application;

wherein the first portion is allocated to the first process by the second operating system.

9. A non-transitory computer readable storage medium containing program instructions, which when executed by one or more processors, cause the one or more processors to perform a method, the program instructions comprising:

instructions to allocate a portion of a shared memory, to a first process;

instructions to store a first counter responsive to successive accesses by any process to the portion of the shared memory; and

instructions to detect, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, occurrence of an invalid memory reference to the first portion of the shared memory caused by an access by the second process, based on at least one of:

comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory; or

comparison of the first counter with a third counter responsive to successive accesses by the second process to the portion of the shared memory.

10. The non-transitory computer readable storage medium of claim 9 wherein:

an intermittent increment in the first counter between successive accesses made by the first process is caused at least by the access by the second process.

11. The non-transitory computer readable storage medium of claim 9 wherein the program instructions further comprise:

instructions to intercept the accesses to the shared memory, to determine whether the invalid memory reference will occur.

12. The non-transitory computer readable storage medium of claim 9 wherein the program instructions further comprise:

instructions to be executed by the first process to release at least one address from the portion of the shared memory;

instructions to reallocate said at least one address; and

instructions to detect occurrence of an illegal access to said at least one address by the first process.

13. The non-transitory computer readable storage medium of claim 9 wherein:

the access by the second process is caused by an event selected from a group consisting of: a memory overrun, a memory underrun, and a stale pointer.

14. The non-transitory computer readable storage medium of claim 9 wherein the program instructions further comprise:

instructions to terminate the second process responsive to detection of occurrence of the invalid memory reference.

15. The non-transitory computer readable storage medium of claim 9 wherein the program instructions further comprise:

instructions to output a notification regarding the invalid memory reference in executing a current instruction, prior to executing another instruction.

16. The non-transitory computer readable storage medium of claim 9 wherein said portion is hereinafter a first portion, the program instructions further comprising:

instructions to allocate a portion of physical memory by a first operating system to a second operating system; and

instructions to spawn processes within the second operating system, the second operating system being comprised in a database application;

wherein the first portion is allocated to the first process by the second operating system.

17. The method of claim 1 wherein:

the first counter is comprised in a shadow memory; and

the second counter is comprised in multiple bits within an instruction pointer used by each process to access the portion of the shared memory.

18. The non-transitory computer readable storage medium of claim 9 wherein:

the first counter is comprised in a shadow memory; and

the second counter is comprised in multiple bits within an instruction pointer used by each process to access the portion of the shared memory.

19. A computer-implemented method comprising:

allocating a portion of a shared memory, to a first process;

storing a first counter responsive to successive accesses by any process to the portion of the shared memory; and

detecting, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, occurrence of an invalid memory reference to the portion of the shared memory caused by an access by the second process, based on at least comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory.

20. The method of claim 19 further comprising:

intercepting the accesses to the portion of the shared memory, to determine whether the invalid memory reference will occur.

21. The method of claim 19 further comprising:

releasing, from the first process, at least one address from the portion of the shared memory;

reallocating said at least one address to a third process; and

detecting occurrence of an illegal access to said at least one address by the first process.

22. The method of claim 19 wherein said portion is hereinafter a first portion, the method further comprising:

allocating a second portion of physical memory by a first operating system to a second operating system; and

spawning processes within a second operating system, the second operating system being comprised in a database application;

wherein the first portion is allocated to the first process by the second operating system.

23. The method of claim 19 wherein:

the first counter is comprised in a shadow memory; and

the second counter is comprised in multiple bits within an instruction pointer used by each process to access the portion of the shared memory.

24. A non-transitory computer readable storage medium comprising program instructions, which when executed by one or more processors, cause the one or more processors to perform a method, the program instructions comprising:

instructions to allocate a portion of a shared memory, to a first process;

instructions to store a first counter responsive to successive accesses by any process to the portion of the shared memory; and

instructions to detect, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, at least one occurrence of an invalid memory reference to the portion of the shared memory caused by an access by the second process, based on at least comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory.

25. The non-transitory computer readable storage medium of claim 24 wherein the program instructions further comprise:

instructions to be executed by the first process to release at least one address from the portion of the shared memory;

instructions to reallocate said at least one address; and

instructions to detect occurrence of an illegal access to said at least one address by the first process.

26. The non-transitory computer readable storage medium of claim 24 wherein said portion is hereinafter a first portion, the program instructions further comprising:

instructions to allocate a second portion of physical memory by a first operating system to a second operating system; and

instructions to spawn processes within a second operating system, the second operating system being comprised in a database application;

wherein the first portion is to be allocated to the first process by the second operating system.

27. The non-transitory computer readable storage medium of claim 24 wherein:

the first counter is comprised in a shadow memory; and

the second counter is comprised in multiple bits within an instruction pointer used by each process to access the portion of the shared memory.

28. The non-transitory computer readable storage medium of claim 24 wherein the program instructions further comprise:

instructions to intercept the accesses to the portion of the shared memory, to determine whether the invalid memory reference will occur.

29. A computer system comprising:

one or more processors;

one or more memories comprising program instructions to be executed by the one or more processors to perform a method;

wherein the program instructions comprise:

instructions to allocate a portion of a shared memory, to a first process;

instructions to store a first counter responsive to successive accesses by any process to the portion of the shared memory; and

instructions to detect, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, at least one occurrence of an invalid memory reference to the portion of the shared memory caused by an access by the second process, based on at least one of:

comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory; or

comparison of the first counter with a third counter responsive to successive accesses by the second process to the portion of the shared memory.

30. A computer system comprising:

one or more processors;

one or more memories comprising program instructions to be executed by the one or more processors to perform a method;

wherein the program instructions comprise:

instructions to allocate a portion of a shared memory, to a first process;

instructions to store a first counter responsive to successive accesses by any process to the portion of the shared memory; and

instructions to detect, subsequent to the first process and a second process other than the first process each accessing the portion of the shared memory, occurrence of an invalid memory reference to the portion of the shared memory caused by an access by the second process, based on at least comparison of the first counter with a second counter responsive to successive accesses by the first process to the portion of the shared memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 27, 2010
From: NARASIMHAN, BALASUBRAMANIAN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 024747/0042 →
Continuity (1)
Related Publication 20110231826A1 · Sep 22, 2011