IP Library Granted Patent US 10,241,856
Granted Patent B2
US 10,241,856 · App. 15/261,688 · Granted Mar 26, 2019

Memory quarantine

Inventors: Jonathan Giloni (Brooklyn, NY); William Habeck (Redwood City, CA); Raunak Rungta (Redwood Shores, CA); Ravi Thammaiah (Redwood Shores, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F11/0793G06F3/064G06F3/0619G06F3/0673G06F11/073G06F11/079G06F11/0751G06F12/00
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 10,241,856
App. No.
15/261,688
Granted
Mar 26, 2019
Kind
B2
Abstract

A method for memory quarantine comprises: in response to a memory error, determining an extent associated with the memory error, wherein the extent defines an amount of memory comprising a plurality of chunks; traversing, forward from a beginning chunk of the plurality chunks, the plurality of chunks until a first chunk is determined to be corrupt; traversing, in reverse from a last chunk of the plurality of chunks, the plurality of chunks until a second chunk is determine to be corrupt; flagging a subset of the plurality of chunks as quarantined, wherein the subset begins with the first chunk and ends with the second chunk, and wherein quarantine prevents the subset from being reallocated after being released.

Claims (60)

1. A method for memory quarantine comprising:

in response to a memory error, determining an extent associated with the memory error, wherein the extent defines an amount of memory comprising a plurality of chunks;

traversing forward from a beginning chunk of the plurality chunks;

determining that a first chunk of the plurality of chunks is corrupt based on the forward traversing;

traversing in reverse from a last chunk of the plurality of chunks;

determining that a second chunk of the plurality of chunks is corrupt based on the reverse traversing;

determining that the second chunk at which the reverse traversing has been performed is separate from the first chunk at which the forward traversing has been performed;

flagging a subset of the plurality of chunks as quarantined, wherein the subset begins with the first chunk and ends with the second chunk; and

releasing the subset of the plurality of chunks to prevent the subset from being reallocated after being released.

2. The method of claim 1 , wherein the subset comprises a third chunk between the first chunk and the second chunk.

3. The method of claim 2 , further comprising:

combining the subset of the plurality of chunks to generate a new chunk;

flagging the new chunk as quarantined.

4. The method of claim 1 , wherein the plurality of chunks are contiguous, and wherein each chunk of the plurality of chunks comprise a previous chunk pointer, a size, and a validity number.

5. The method of claim 4 , where traversing forward further comprises:

traversing, from a particular chunk, to a next chunk using the size of the particular chunk;

checking the previous chunk pointer of the next chunk with the particular chunk;

checking the validity number of the next chunk;

determining the first chunk is corrupt when checking fails.

6. The method of claim 4 , where traversing in reverse further comprises:

traversing, from a particular chunk, to a previous chunk using the previous chunk pointer of the particular chunk;

checking the particular chunk using the size of the previous chunk;

checking the validity number of the next chunk;

determining the second chunk is corrupt when checking fails.

7. The method of claim 1 , wherein the memory error comprises a range of memory and is reported from a crash of an application.

8. The method of claim 1 , wherein the memory error is detected during allocation or release of memory.

9. The method of claim 1 , further comprising:

determining a quantity of quarantined chunks;

in response to the quantity exceeding a threshold, sending an alert.

10. The method of claim 1 , wherein the last chunk is identified using a pointer in a header of the extent.

11. One or more non-transitory computer-readable media storing instructions, wherein the instructions include:

instructions which, when executed by one or more hardware processors, cause in response to a memory error, determining an extent associated with the memory error, wherein the extent defines an amount of memory comprising a plurality of chunks;

instructions which, when executed by one or more hardware processors, cause traversing forward from a beginning chunk of the plurality chunks;

instructions which, when executed by one or more hardware processors, cause determining that a first chunk of the plurality of chunks is corrupt based on the forward traversing;

instructions which, when executed by one or more hardware processors, cause traversing in reverse from a last chunk of the plurality of chunks;

instructions which, when executed by one or more hardware processors, cause determining that a second chunk of the plurality of chunks is corrupt based on the reverse traversing;

instructions which, when executed by one or more hardware processors, cause determining that the second chunk at which the reverse traversing has been performed is separate from the first chunk at which the forward traversing has been performed;

instructions which, when executed by one or more hardware processors, cause flagging a subset of the plurality of chunks as quarantined, wherein the subset begins with the first chunk and ends with the second chunk; and

instructions which, when executed by one or more hardware processors, cause releasing the subset of the plurality of chunks to prevent the subset from being reallocated after being released.

12. The one or more non-transitory computer-readable media of claim 11 , wherein the subset comprises a third chunk between the first chunk and the second chunk.

13. The one or more non-transitory computer-readable media of claim 12 , the instructions further comprising:

instructions which, when executed by one or more hardware processors, cause combining the subset of the plurality of chunks to generate a new chunk;

instructions which, when executed by one or more hardware processors, cause flagging the new chunk as quarantined.

14. The one or more non-transitory computer-readable media of claim 11 , wherein the plurality of chunks are contiguous, and wherein each chunk of the plurality of chunks comprise a previous chunk pointer, a size, and a validity number.

15. The one or more non-transitory computer-readable media of claim 14 , the instructions further comprising:

instructions which, when executed by one or more hardware processors, cause traversing, from a particular chunk, to a next chunk using the size of the particular chunk;

instructions which, when executed by one or more hardware processors, cause checking the previous chunk pointer of the next chunk with the particular chunk;

instructions which, when executed by one or more hardware processors, cause checking the validity number of the next chunk;

instructions which, when executed by one or more hardware processors, cause determining the first chunk is corrupt when checking fails.

16. The one or more non-transitory computer-readable media of claim 14 , the instructions further comprising:

instructions which, when executed by one or more hardware processors, cause traversing, from a particular chunk, to a previous chunk using the previous chunk pointer of the particular chunk;

instructions which, when executed by one or more hardware processors, cause checking the particular chunk using the size of the previous chunk;

instructions which, when executed by one or more hardware processors, cause checking the validity number of the next chunk;

instructions which, when executed by one or more hardware processors, cause determining the second chunk is corrupt when checking fails.

17. The one or more non-transitory computer-readable media of claim 11 , wherein the memory error comprises a range of memory and is reported from a crash of an application.

18. The one or more non-transitory computer-readable media of claim 11 , wherein the memory error is detected during allocation or release of memory.

19. The one or more non-transitory computer-readable media of claim 11 , the instructions further comprising:

instructions which, when executed by one or more hardware processors, cause determining a quantity of quarantined chunks;

instructions which, when executed by one or more hardware processors, cause in response to the quantity exceeding a threshold, sending an alert.

20. The one or more non-transitory computer-readable media of claim 11 , wherein the last chunk is identified using a pointer in a header of the extent.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2016
From: GILONI, JONATHAN; HABECK, WILLIAM; RUNGTA, RAUNAK; THAMMAIAH, RAVI
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 039698/0985 →
Continuity (1)
Related Publication 20180074885A1 · Mar 15, 2018
Cited By (1)
US 12,481,567