HEAP MANAGEMENT FOR MEMORY CORRUPTION DETECTION
First Claim
1. A processor, comprising:
- a memory to store data from an application and a metadata table that stores a first metadata value associated with a first set of one or more contiguous memory blocks of the memory and a second metadata value associated with a second set of one or more contiguous memory blocks of the memory; and
a processor core coupled to the memory, wherein the processing core is to;
receive a first pointer produced by a first memory access instruction of the application being executed by the processor, the first pointer comprising a first memory address of a first memory object and a third metadata value, the memory address identifying a memory block in the first set of one or more contiguous memory blocks;
compare the third metadata value to the first metadata value; and
communicate a memory corruption detection message to the application when the third metadata value does not match the first metadata value.
0 Assignments
0 Petitions
Accused Products
Abstract
Memory corruption detection technologies are described. A processor core of a processor can receive a first pointer produced by a first memory access instruction of an application being executed by the processor. The first pointer includes a first memory address of a first memory object and a third metadata value and the memory address identifies a memory block in the first set of one or more contiguous memory blocks. The processor core compares the third metadata value to the first metadata value and communicates a memory corruption detection message to the application when the third metadata value does not match the first metadata value. The processor core provides the first memory object to the application when the third metadata value matches the first metadata value.
-
Citations
20 Claims
-
1. A processor, comprising:
-
a memory to store data from an application and a metadata table that stores a first metadata value associated with a first set of one or more contiguous memory blocks of the memory and a second metadata value associated with a second set of one or more contiguous memory blocks of the memory; and a processor core coupled to the memory, wherein the processing core is to; receive a first pointer produced by a first memory access instruction of the application being executed by the processor, the first pointer comprising a first memory address of a first memory object and a third metadata value, the memory address identifying a memory block in the first set of one or more contiguous memory blocks; compare the third metadata value to the first metadata value; and communicate a memory corruption detection message to the application when the third metadata value does not match the first metadata value. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A processor comprising:
-
a memory to store a data structure; and a processor core coupled to the memory, wherein the processing core is to; receive a request from an application, the request specifying at least one of a first size or a second size of a memory object, wherein the first size corresponds to a number of contiguous memory blocks below a first threshold amount, and wherein the second size corresponds to a number of contiguous memory blocks that exceeds the first threshold amount; write, into the data structure, a first unique identifier associated with one or more contiguous memory blocks of the memory; create a pointer with a memory address of the memory object and a second unique identifier associated with the memory object; and provide the pointer to the application. - View Dependent Claims (9, 10, 11, 12, 12, 13, 14)
-
-
15. A processor comprising:
-
a memory to store data from an application, wherein the memory comprises a memory corruption detection (MCD) data structure; and a processor core coupled to the memory, wherein the processing core is to; receive, from the application, an allocation request for an allocation of one or more contiguous memory blocks of the memory for a memory object; allocate the one or more contiguous memory blocks for the memory object in view of a size of the memory object requested; write, into the MCD data structure, a first MCD designation associated with the one or more contiguous memory blocks; create a pointer with a memory address of the memory object and a second MCD designation associated with the memory object; send, to the application, the pointer; determine the first MCD designation associated with the memory object using a random selection scheme; and verify that the first MCD designation is different from another MCD designation of an adjacent contiguous memory block.
-
-
16. A system comprising:
-
a processor; a memory device coupled to the processor, the memory device to store a memory corruption detection (MCD) data structure; and a memory controller coupled to the memory device, the memory controller to; receive, from an application, a release request for a release of a memory object in a system memory of a processor, wherein the release request comprises a pointer; identify a first unique identifier and a memory address of the pointer; change the first unique identifier, stored in the MCD data structure, to a second unique identifier for the memory address; and release a memory object in the system memory associated with the memory address. - View Dependent Claims (17, 18, 19, 20)
-
Specification