US7380245B1 - Technique for detecting corruption associated with a stack in a storage device - Google Patents
Technique for detecting corruption associated with a stack in a storage device Download PDFInfo
- Publication number
- US7380245B1 US7380245B1 US09/197,993 US19799398A US7380245B1 US 7380245 B1 US7380245 B1 US 7380245B1 US 19799398 A US19799398 A US 19799398A US 7380245 B1 US7380245 B1 US 7380245B1
- Authority
- US
- United States
- Prior art keywords
- stack
- predetermined value
- set forth
- address location
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0763—Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Definitions
- the present invention relates generally to multi-tasking systems and, more particularly, to a technique for detecting corruption associated with a stack in a storage device.
- a real time embedded system often provides a multi-tasking environment in order to meet diverse application requirements.
- an individual stack i.e., an individual work space
- Each stack provides a location, or a group of locations, where dynamic function variables may be stored as needed for a corresponding task.
- each stack is allocated a dedicated range of sequential memory, although a stack can also be allocated a dedicated space of non-sequential memory. Regardless, stacks have always had problems in the areas of overflow and underflow.
- Stack overflow occurs when the stack memory is insufficient to meet workload demand.
- Stack underflow occurs when a task attempts to pop too many function variables off of the stack.
- the net result of either operation is the corruption of adjacent memory. Corruption of adjacent memory results in non-predictable behavior and difficult to impossible casual analysis of the problem (i.e., finding the source of the problem).
- the first solution basically ignores the problem, hoping but not ensuring that it never happens. Since stack corruption is a dynamic condition, this solution is fraught with shortcomings.
- the second solution solves the detection problem, but at the cost of additional hardware complexity and corresponding hardware failure rates.
- a software solution to the above-described stack overflow and underflow problems is to keep track of the number of function variables that are on the stack by adding one (i.e., +1) to a counter whenever a push operation occurs, and by subtracting one (i.e., ⁇ 1) from the counter whenever a pop operation occurs.
- a complex push/pop operation i.e., when push/pop operations are performed in a number of different places
- a centralized procedure and/or function for performing the push and pop operations can be created, wherein the appropriate addition and subtraction operations are performed therein.
- this requires calling such procedures and/or functions, which requires additional memory space and processor time.
- the primary object of the present invention is to provide a technique for detecting corruption associated with a stack in a storage device.
- a technique for detecting corruption associated with a stack in a storage device is provided.
- the technique is beneficially utilized in a multi-tasking environment wherein a processor typically performs a task by retrieving a message from a message queue and processing the message by calling, or invoking, one or more specific functions which are required to perform the task based upon information contained in the message.
- a processor typically performs a task by retrieving a message from a message queue and processing the message by calling, or invoking, one or more specific functions which are required to perform the task based upon information contained in the message.
- the corruption associated with the stack can arise as a result of a faulty task, function, or the stack itself.
- the technique can be realized by having a processing device such as, for example, a digital microprocessor, insert a quantity of information adjacent to the stack in the storage device.
- the quantity of information has an initial state which can represent a variety of predetermined configurations such as, for example, a bit pattern, a processor readable address, or a processor readable instruction.
- the processing device inspects the quantity of information after certain operations occur so as to identify any deviation from the initial state and thereby detect corruption associated with the stack in the storage device.
- a first operation data is added to the stack after the quantity of information has been inserted adjacent to the stack in the storage device.
- This first operation which is typically referred to as a push operation, can cause the quantity of information to deviate from the initial state. If upon inspection such a deviation is identified, then the push operation is recorded and remedial measures can be taken.
- a second operation data is removed from the stack after the quantity of information has been inserted adjacent to the stack in the storage device.
- This second operation which is typically referred to as a pop operation, can also cause the quantity of information to deviate from the initial state. If upon inspection such a deviation is identified, then the pop operation is recorded and remedial measures can be taken.
- the processing device After a deviation from the initial state has been identified, the processing device typically restores the quantity of information to the initial state, thereby allowing the detection of any subsequent deviations from the initial state.
- the processing device inserts a first quantity of information adjacent to a top of the stack in the storage device, and inserts a second quantity of information adjacent to the bottom of the stack in the storage device. This aspect of the present invention allows both stack overflow and stack underflow conditions to be detected.
- FIG. 1 is a schematic diagram of a processing system for facilitating the implementation of a multi-tasking environment in accordance with the present invention.
- FIG. 2 is an illustration of an exemplary message queue for storing a plurality of messages in the order they were received and/or in the order of occurrence of their corresponding events in accordance with the present invention.
- FIG. 3 is an illustration of an exemplary stack structure wherein a task is allocated a stack space in memory for storing variables associated with the different functions that are invoked by the task in accordance with the present invention.
- FIG. 4 is an illustration of an exemplary stack structure having a plurality of stacks and a corresponding plurality of guard frames in accordance with the present invention.
- a processing system 10 including at least one processor (P) 12 , memory (M) 14 , and input/output (I/O) interface 16 , connected to each other by a bus 18 , for facilitating the implementation of a multi-tasking environment in accordance with the present invention.
- the processor 12 typically performs a task by retrieving a message from a message queue and processing the message by calling, or invoking, one or more specific functions which are required to perform the task based upon information contained in a message.
- a message typically identifies an event which is received by the processing system 10 through the input/output interface 16 . Alternatively, a message can identify an event which occurs within the processing system 10 .
- each message is typically stored in the message queue in the order it is received or in the order of occurrence of the corresponding event, which are often one in the same.
- a message queue 20 containing a plurality of messages 22 which are stored in the order they were received and/or in the order of occurrence of their corresponding events.
- the message queue is typically located in the memory 14 .
- the memory 14 also typically contains operating system software which, when the processing system 10 is initialized, causes the processor 12 to establish a plurality of tasks and allocate a corresponding plurality of dedicated work spaces, or stacks, in the memory 14 .
- Each stack provides a location, or a group of locations, in the memory 14 where function variables may be stored as needed for a corresponding task.
- FIG. 3 there is shown a stack structure 30 wherein each task is allocated a stack space in the memory 14 for storing variables associated with the different functions that are invoked for each task. It should be noted that, although FIG. 3 shows each stack as encompassing a dedicated range of sequential memory, the present invention allows a stack to encompass a dedicated space of non-sequential memory, as described in detail below.
- each task is essentially a collection of functions which are typically established along with their corresponding tasks when the processing system 10 is initialized.
- Each function typically has a predefined template that includes calling the function, storing function parameters, and local variables. The number of times each function may be called is unknown. The number of functions that may be called is also unknown. The combination of these two factors make the stack size unknown. This is explained on the next page. These memory requirements are typically not fully known at compile time. Thus, due to this lack of knowledge, the amount of stack space that is allocated for each task when the processing system 10 is initialized is often inadequate, and stack overflow and underflow can easily occur without safeguards.
- the operating system software causes the processor 12 to activate a specific task based upon workload demands and priorities.
- the task begins when the processor 12 retrieves the first message from the message queue and begins processing the message.
- the processor 12 processes the message by invoking one or more specific functions which are required to perform the task based upon information contained in the message. As each function is invoked, additional stack space is used.
- the dynamic aspect of a stack is its depth. That is, the required depth of a stack depends upon how many function variables will be placed on the stack for any single execution thread as function variables are pushed on and popped off the stack in order to process a message. This is non-deterministic in nature due to implementation techniques such as recursion. Thus, due to the non-deterministic nature of the required depth of a stack, the amount of stack space that is allocated for each task when the processing system 10 is initialized is often inadequate, and stack overflow and underflow can easily occur without safeguards.
- guard frame is inserted at the top and bottom of each stack so as to allow stack corruption caused by stack overflow and underflow to be detected by a guard function. Once the stack corruption is detected, the function which caused the stack corruption to occur can be determined and remedial measures can be taken.
- a stack structure 40 having a plurality of stacks 42 and a corresponding plurality of guard frames 44 in accordance with the present invention.
- Each guard frame 44 borders a corresponding stack 42 and preferably comprises a fixed bit pattern that is stored as one or more bytes in the memory 14 .
- a guard frame 44 can be formed of a sequence of bytes containing a bit pattern of alternating ones (i.e., logic level 1) and zeros (i.e., logic level 0).
- a guard frame 44 can be formed of a sequence of bytes containing an address or instruction which causes the processor 12 to reach some predetermined location or state.
- each guard frame 44 is typically implementation dependent, but is always relatively small in comparison to a corresponding stack 42 .
- the key issues are that each guard frame 44 should be large enough to be unique from random data patterns, large enough to provide corruption protection to an adjacent stack, and small enough to not be a performance burden.
- two physically adjacent stacks e.g., stack 1 and stack 2 in FIG. 4
- may share the same guard frame e.g., the guard frame 44 located between stack 1 and stack 2 in FIG. 4 ).
- the guard function Each time a function variable is pushed on or popped off a stack 42 , the appropriate guard frame 44 is checked by a guard function. For example, when a function variable is pushed onto a stack 42 , the guard function checks the guard frame 44 at the bottom of the stack 42 to see if an overflow has occurred or might occur based on the minimum space requirements of the function. An overflow occurs when the guard frame 44 has been corrupted (e.g., overwritten) or insufficient memory exists to satisfy the minimum space requirements of the function. If the guard function determines that an overflow has occurred, or might occur, then the guard function records the offending function and task and begins task cleanup and recreation. As part of task cleanup, the guard frame 44 is restored to its pre-corrupted state.
- the guard function checks the guard frame 44 at the top of the stack 42 to see if an underflow has occurred.
- An underflow occurs when there are no function variables on the stack 42 and a pop operation is performed In such a case the guard frame 44 would be corrupted. This typically occurs when there is some sort of corruption of the task, the function, or even the stack 42 which causes stack depth confusion. If the guard function determines that an underflow has occurred, then the guard function records the offending function and task and begins task cleanup and recreation. Again, as part of task cleanup, the guard frame 44 is restored to its pre-corrupted state.
- guard function is typically a separate function which is invoked whenever a push or pop operation occurs. That is, the guard function, in conjunction with the guard frame, is a software-based solution to stack overflow and underflow problems which overcomes the shortcomings of traditional solutions such as excess memory allocation and hardware write protect schemes. Furthermore, unlike a prior art software solution, the present invention guard function and guard frame solution does not require a counter to be maintained or a computations to be performed. That is, the present invention guard function and guard frame solution requires minimal overhead.
- guard function and guard frame solution to stack overflow and underflow problems provides a mechanism for detecting stack corruption, preventing corruption of adjacent stacks, and isolating offending functions, tasks, and software. By implementing this mechanism, the reliability of real time embedded controllers is improved.
- An additional advantage of this solution is that it can be applied to existing systems that lack hardware write protect schemes and to systems that require memory mining.
Abstract
A technique for detecting corruption associated with a stack in a storage device is disclosed. In one embodiment, the technique is realized by having a processing device insert a quantity of information adjacent to the stack in the storage device, wherein the quantity of information has an initial state. The processing device then inspects the quantity of information so as to identify any deviation from the initial state and thereby detect corruption associated with the stack in the storage device.
Description
1. Field of the Invention
The present invention relates generally to multi-tasking systems and, more particularly, to a technique for detecting corruption associated with a stack in a storage device.
2. Background of the Present Invention
A real time embedded system often provides a multi-tasking environment in order to meet diverse application requirements. In a multi-tasking environment, an individual stack (i.e., an individual work space) is typically required for each task. Each stack provides a location, or a group of locations, where dynamic function variables may be stored as needed for a corresponding task. Typically, each stack is allocated a dedicated range of sequential memory, although a stack can also be allocated a dedicated space of non-sequential memory. Regardless, stacks have always had problems in the areas of overflow and underflow.
Stack overflow occurs when the stack memory is insufficient to meet workload demand. Stack underflow occurs when a task attempts to pop too many function variables off of the stack. The net result of either operation is the corruption of adjacent memory. Corruption of adjacent memory results in non-predictable behavior and difficult to impossible casual analysis of the problem (i.e., finding the source of the problem).
Traditional solutions to stack overflow and underflow problems are to either significantly over-allocate stack memory or use hardware write protect schemes. The first solution basically ignores the problem, hoping but not ensuring that it never happens. Since stack corruption is a dynamic condition, this solution is fraught with shortcomings. The second solution solves the detection problem, but at the cost of additional hardware complexity and corresponding hardware failure rates.
A software solution to the above-described stack overflow and underflow problems is to keep track of the number of function variables that are on the stack by adding one (i.e., +1) to a counter whenever a push operation occurs, and by subtracting one (i.e., −1) from the counter whenever a pop operation occurs. However, whenever a complex push/pop operation is performed (i.e., when push/pop operations are performed in a number of different places), it is difficult to ensure that all such places perform the requisite addition/subtraction operation. As an alternative, a centralized procedure and/or function for performing the push and pop operations can be created, wherein the appropriate addition and subtraction operations are performed therein. However, this requires calling such procedures and/or functions, which requires additional memory space and processor time.
In view of the foregoing, it would be desirable to provide a technique for overcoming the above-described stack overflow and underflow problems, while also overcoming the shortcomings of the above-described prior art solutions. More particularly, it would be desirable to provide a technique for detecting stack corruption in a multi-tasking environment.
The primary object of the present invention is to provide a technique for detecting corruption associated with a stack in a storage device.
The above-stated primary object, as well as other objects, features, and advantages, of the present invention will become readily apparent from the following detailed description which is to be read in conjunction with the appended drawings.
According to the present invention, a technique for detecting corruption associated with a stack in a storage device is provided. The technique is beneficially utilized in a multi-tasking environment wherein a processor typically performs a task by retrieving a message from a message queue and processing the message by calling, or invoking, one or more specific functions which are required to perform the task based upon information contained in the message. For each task there is a stack formed in a storage device, for example a memory device, for storing function variables as needed for performing the corresponding task. The corruption associated with the stack can arise as a result of a faulty task, function, or the stack itself.
The technique can be realized by having a processing device such as, for example, a digital microprocessor, insert a quantity of information adjacent to the stack in the storage device. The quantity of information has an initial state which can represent a variety of predetermined configurations such as, for example, a bit pattern, a processor readable address, or a processor readable instruction. After the quantity of information has been inserted adjacent to the stack in the storage device, the processing device inspects the quantity of information after certain operations occur so as to identify any deviation from the initial state and thereby detect corruption associated with the stack in the storage device.
In a first operation, data is added to the stack after the quantity of information has been inserted adjacent to the stack in the storage device. This first operation, which is typically referred to as a push operation, can cause the quantity of information to deviate from the initial state. If upon inspection such a deviation is identified, then the push operation is recorded and remedial measures can be taken.
In a second operation, data is removed from the stack after the quantity of information has been inserted adjacent to the stack in the storage device. This second operation, which is typically referred to as a pop operation, can also cause the quantity of information to deviate from the initial state. If upon inspection such a deviation is identified, then the pop operation is recorded and remedial measures can be taken.
After a deviation from the initial state has been identified, the processing device typically restores the quantity of information to the initial state, thereby allowing the detection of any subsequent deviations from the initial state.
In one aspect of the present invention, the processing device inserts a first quantity of information adjacent to a top of the stack in the storage device, and inserts a second quantity of information adjacent to the bottom of the stack in the storage device. This aspect of the present invention allows both stack overflow and stack underflow conditions to be detected.
In order to facilitate a fuller understanding of the present invention, reference is now made to the appended drawings. These drawings should not be construed as limiting the present invention, but are intended to be exemplary only.
Referring to FIG. 1 , there is shown a processing system 10 including at least one processor (P) 12, memory (M) 14, and input/output (I/O) interface 16, connected to each other by a bus 18, for facilitating the implementation of a multi-tasking environment in accordance with the present invention. In such a multi-tasking environment, the processor 12 typically performs a task by retrieving a message from a message queue and processing the message by calling, or invoking, one or more specific functions which are required to perform the task based upon information contained in a message. A message typically identifies an event which is received by the processing system 10 through the input/output interface 16. Alternatively, a message can identify an event which occurs within the processing system 10. In any case, each message is typically stored in the message queue in the order it is received or in the order of occurrence of the corresponding event, which are often one in the same. For example, referring to FIG. 2 , there is shown a message queue 20 containing a plurality of messages 22 which are stored in the order they were received and/or in the order of occurrence of their corresponding events. The message queue is typically located in the memory 14.
Referring again to FIG. 1 , the memory 14 also typically contains operating system software which, when the processing system 10 is initialized, causes the processor 12 to establish a plurality of tasks and allocate a corresponding plurality of dedicated work spaces, or stacks, in the memory 14. Each stack provides a location, or a group of locations, in the memory 14 where function variables may be stored as needed for a corresponding task. For example, referring to FIG. 3 , there is shown a stack structure 30 wherein each task is allocated a stack space in the memory 14 for storing variables associated with the different functions that are invoked for each task. It should be noted that, although FIG. 3 shows each stack as encompassing a dedicated range of sequential memory, the present invention allows a stack to encompass a dedicated space of non-sequential memory, as described in detail below.
Referring again to FIG. 1 , each task is essentially a collection of functions which are typically established along with their corresponding tasks when the processing system 10 is initialized. Each function typically has a predefined template that includes calling the function, storing function parameters, and local variables. The number of times each function may be called is unknown. The number of functions that may be called is also unknown. The combination of these two factors make the stack size unknown. This is explained on the next page. These memory requirements are typically not fully known at compile time. Thus, due to this lack of knowledge, the amount of stack space that is allocated for each task when the processing system 10 is initialized is often inadequate, and stack overflow and underflow can easily occur without safeguards.
In operation, the operating system software causes the processor 12 to activate a specific task based upon workload demands and priorities. The task begins when the processor 12 retrieves the first message from the message queue and begins processing the message. The processor 12 processes the message by invoking one or more specific functions which are required to perform the task based upon information contained in the message. As each function is invoked, additional stack space is used.
The dynamic aspect of a stack is its depth. That is, the required depth of a stack depends upon how many function variables will be placed on the stack for any single execution thread as function variables are pushed on and popped off the stack in order to process a message. This is non-deterministic in nature due to implementation techniques such as recursion. Thus, due to the non-deterministic nature of the required depth of a stack, the amount of stack space that is allocated for each task when the processing system 10 is initialized is often inadequate, and stack overflow and underflow can easily occur without safeguards.
In accordance with the exemplary embodiment of the present invention, safeguards are employed so as to avoid stack overflow and underflow. That is, a guard frame is inserted at the top and bottom of each stack so as to allow stack corruption caused by stack overflow and underflow to be detected by a guard function. Once the stack corruption is detected, the function which caused the stack corruption to occur can be determined and remedial measures can be taken.
Referring to FIG. 4 , there is shown a stack structure 40 having a plurality of stacks 42 and a corresponding plurality of guard frames 44 in accordance with the present invention. Each guard frame 44 borders a corresponding stack 42 and preferably comprises a fixed bit pattern that is stored as one or more bytes in the memory 14. For example, a guard frame 44 can be formed of a sequence of bytes containing a bit pattern of alternating ones (i.e., logic level 1) and zeros (i.e., logic level 0). Alternatively, a guard frame 44 can be formed of a sequence of bytes containing an address or instruction which causes the processor 12 to reach some predetermined location or state.
The size of each guard frame 44 is typically implementation dependent, but is always relatively small in comparison to a corresponding stack 42. The key issues are that each guard frame 44 should be large enough to be unique from random data patterns, large enough to provide corruption protection to an adjacent stack, and small enough to not be a performance burden. At this point it should be noted that two physically adjacent stacks (e.g., stack 1 and stack 2 in FIG. 4 ) may share the same guard frame (e.g., the guard frame 44 located between stack 1 and stack 2 in FIG. 4 ). However, if two stacks are not physically adjacent (i.e., the two stacks are separated by memory space that is dedicated to another purpose), then a separate guard frame will typically be required for each stack (i.e., the two stacks cannot share a guard frame). For example, if the memory space 46 between stack 2 and stack N was dedicated to another purpose (i.e., memory space 46 was not dedicated to one or more stacks), then there would be no stacks adjacent to either stack 2 or stack N in memory space 46 and neither stack 2 nor stack N could share a guard frame with another stack in memory space 46.
Each time a function variable is pushed on or popped off a stack 42, the appropriate guard frame 44 is checked by a guard function. For example, when a function variable is pushed onto a stack 42, the guard function checks the guard frame 44 at the bottom of the stack 42 to see if an overflow has occurred or might occur based on the minimum space requirements of the function. An overflow occurs when the guard frame 44 has been corrupted (e.g., overwritten) or insufficient memory exists to satisfy the minimum space requirements of the function. If the guard function determines that an overflow has occurred, or might occur, then the guard function records the offending function and task and begins task cleanup and recreation. As part of task cleanup, the guard frame 44 is restored to its pre-corrupted state.
In the opposite case, when a function variable is popped off of a stack 42, the guard function checks the guard frame 44 at the top of the stack 42 to see if an underflow has occurred. An underflow occurs when there are no function variables on the stack 42 and a pop operation is performed In such a case the guard frame 44 would be corrupted. This typically occurs when there is some sort of corruption of the task, the function, or even the stack 42 which causes stack depth confusion. If the guard function determines that an underflow has occurred, then the guard function records the offending function and task and begins task cleanup and recreation. Again, as part of task cleanup, the guard frame 44 is restored to its pre-corrupted state.
At this point it should be noted that the guard function is typically a separate function which is invoked whenever a push or pop operation occurs. That is, the guard function, in conjunction with the guard frame, is a software-based solution to stack overflow and underflow problems which overcomes the shortcomings of traditional solutions such as excess memory allocation and hardware write protect schemes. Furthermore, unlike a prior art software solution, the present invention guard function and guard frame solution does not require a counter to be maintained or a computations to be performed. That is, the present invention guard function and guard frame solution requires minimal overhead.
The present invention guard function and guard frame solution to stack overflow and underflow problems provides a mechanism for detecting stack corruption, preventing corruption of adjacent stacks, and isolating offending functions, tasks, and software. By implementing this mechanism, the reliability of real time embedded controllers is improved. An additional advantage of this solution is that it can be applied to existing systems that lack hardware write protect schemes and to systems that require memory mining.
The present invention is not to be limited in scope by the specific embodiments described herein. Indeed, various modifications of the present invention, in addition to those described herein, will be apparent to those of skill in the art from the foregoing description and accompanying drawings. Thus, such modifications are intended to fall within the scope of the appended claims.
Claims (18)
1. A method for detecting corruption associated with a stack in a storage device, the stack encompassing a range of memory of a fixed size, the method comprising the steps of:
storing a first predetermined value in a first address location immediately preceding the range of memory;
storing a second predetermined value in a second address location immediately following the range of memory;
detecting the occurrence of a stack operation within the stack;
comparing a value in the first address location to the first predetermined value to determine if the stack operation corrupted the first predetermined value stored in the first address location,
where the stack operation is determined to have corrupted the first predetermined value, restoring the first predetermined value to the first address location;
comparing a value in the second address location to the second predetermined value to determine if the stack operation corrupted the second predetermined value stored in the second address location; and
where the stack operation is determined to have corrupted the second predetermined value, restoring the second predetermined value to the second address location.
2. The method as set forth in claim 1 , wherein the first predetermined value comprises a known bit pattern.
3. The method as set forth in claim 1 , wherein the first predetermined value comprises a processor readable address.
4. The method as set forth in claim 1 , wherein the first predetermined value comprises a processor readable instruction.
5. The method as set forth in claim 1 , wherein the stack operation inserts data in the stack.
6. The method as set forth in claim 1 , wherein the stack operation removes data from the stack.
7. The method as set forth in claim 1 , wherein the second predetermined value comprises a known bit pattern.
8. The method as set forth in claim 1 , wherein the second predetermined value comprises a processor readable address.
9. The method as set forth in claim 1 , wherein the second predetermined value comprises a processor readable instruction.
10. A system for detecting corruption associated with a stack, the system comprising:
a processor; and
a storage medium comprising a stack, the stack encompassing a range of memory of a fixed size, wherein the processor is operable to:
store a first predetermined value in a first address location immediately preceding the range of memory;
storing a second predetermined value in a second address location immediately following the range of memory;
detect the occurrence of a stack operation within the stack;
compare a value in the first address location to the first predetermined value to determine if the stack operation corrupted the first predetermined value stored in the first address location;
where the stack operation is determined to have corrupted the first predetermined value, restoring the first predetermined value to the first address location;
comparing a value in the second address location to the second predetermined value to determine if the stack operation corrupted the second predetermined value stored in the second address location; and
where the stack operation is determined to have corrupted the second predetermined value, restoring the second predetermined value to the second address location.
11. The system as set forth in claim 10 , wherein the first predetermined value comprises a known bit pattern.
12. The system as set forth in claim 10 , wherein the first predetermined value comprises a processor readable address.
13. The system as set forth in claim 10 , wherein the first predetermined value comprises a processor readable instruction.
14. The system as set forth in claim 10 , wherein the stack operation inserts data in the stack.
15. The system as set forth in claim 10 , wherein the stack operation removes data from the stack.
16. The system as set forth in claim 10 , wherein the second predetermined value comprises a known bit pattern.
17. The system as set forth in claim 10 , wherein the second predetermined value comprises a processor readable address.
18. The system as set forth in claim 10 , wherein the second predetermined value comprises a processor readable instruction.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/197,993 US7380245B1 (en) | 1998-11-23 | 1998-11-23 | Technique for detecting corruption associated with a stack in a storage device |
KR1019990052272A KR100350484B1 (en) | 1998-11-23 | 1999-11-23 | Apparatus and method for detecting corruption associated with a stack in a storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/197,993 US7380245B1 (en) | 1998-11-23 | 1998-11-23 | Technique for detecting corruption associated with a stack in a storage device |
Publications (1)
Publication Number | Publication Date |
---|---|
US7380245B1 true US7380245B1 (en) | 2008-05-27 |
Family
ID=22731571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/197,993 Expired - Fee Related US7380245B1 (en) | 1998-11-23 | 1998-11-23 | Technique for detecting corruption associated with a stack in a storage device |
Country Status (2)
Country | Link |
---|---|
US (1) | US7380245B1 (en) |
KR (1) | KR100350484B1 (en) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136876A1 (en) * | 2004-12-21 | 2006-06-22 | National Instruments Corporation | Test executive with buffer overwrite detection for parameters of user-supplied code modules |
US20060143527A1 (en) * | 2004-12-21 | 2006-06-29 | Grey James A | Test executive with stack corruption detection, stack safety buffers, and increased determinism for uninitialized local variable bugs |
US20060242375A1 (en) * | 2005-04-25 | 2006-10-26 | Sharpe Edward J | Program stack handling |
US20070220355A1 (en) * | 2006-02-23 | 2007-09-20 | Ruscio Joseph F | Method for a checkpoint library to detect corruption by an application |
US20090150616A1 (en) * | 2007-12-10 | 2009-06-11 | International Business Machines Corporation | System and method of using threads and thread-local storage |
US20100017660A1 (en) * | 2008-07-15 | 2010-01-21 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
US20100088705A1 (en) * | 2008-10-08 | 2010-04-08 | International Business Machines Corporation | Call Stack Protection |
US8239836B1 (en) * | 2008-03-07 | 2012-08-07 | The Regents Of The University Of California | Multi-variant parallel program execution to detect malicious code injection |
FR2974648A1 (en) * | 2011-04-29 | 2012-11-02 | St Microelectronics Rousset | Method for protecting RAM against attacks by injections of faults in integrated circuit, involves filling blank areas or unused areas of RAM with pattern, and monitoring entire RAM for possible modification of state of bit |
US20130013965A1 (en) * | 2011-07-08 | 2013-01-10 | Stmicroelectronics (Rousset) Sas | Microprocessor protected against stack overflow |
US20130124917A1 (en) * | 2011-11-16 | 2013-05-16 | GM Global Technology Operations LLC | Recovering from stack corruption faults in embedded software systems |
CN103116529A (en) * | 2011-07-18 | 2013-05-22 | 英飞凌科技股份有限公司 | Method and apparatus for realtime detection of heap memory corruption by buffer overruns |
US20150020201A1 (en) * | 2013-07-09 | 2015-01-15 | International Business Machines Corporation | Anti-viral compiler |
US9026866B2 (en) | 2012-04-23 | 2015-05-05 | Infineon Technologies Ag | Method and system for realtime detection of stack frame corruption during nested procedure calls |
US20160196428A1 (en) * | 2014-07-16 | 2016-07-07 | Leviathan, Inc. | System and Method for Detecting Stack Pivot Programming Exploit |
US9495237B1 (en) | 2016-01-06 | 2016-11-15 | International Business Machines Corporation | Detection of corruption of call stacks |
US9514301B1 (en) | 2016-01-06 | 2016-12-06 | International Business Machines Corporation | Interlinking modules with differing protections using stack indicators |
US9576128B1 (en) * | 2016-01-06 | 2017-02-21 | International Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
US9582274B1 (en) | 2016-01-06 | 2017-02-28 | International Business Machines Corporation | Architected store and verify guard word instructions |
US9606855B1 (en) | 2016-01-06 | 2017-03-28 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
US10120745B2 (en) | 2016-01-06 | 2018-11-06 | International Business Machines Corporation | Providing instructions to protect stack return addresses in a hardware managed stack architecture |
US10228992B2 (en) | 2016-01-06 | 2019-03-12 | International Business Machines Corporation | Providing instructions to facilitate detection of corrupt stacks |
US10331888B1 (en) * | 2006-02-09 | 2019-06-25 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US10354074B2 (en) | 2014-06-24 | 2019-07-16 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US10586039B2 (en) * | 2017-09-01 | 2020-03-10 | Fujitsu Limited | Information processing apparatus |
US11146572B2 (en) | 2013-09-12 | 2021-10-12 | Virsec Systems, Inc. | Automated runtime detection of malware |
US11409870B2 (en) | 2016-06-16 | 2022-08-09 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
US5222220A (en) * | 1989-11-16 | 1993-06-22 | Mehta Hemang S | Microprocessor stack built-in guards |
US5535329A (en) * | 1991-06-21 | 1996-07-09 | Pure Software, Inc. | Method and apparatus for modifying relocatable object code files and monitoring programs |
US5572698A (en) * | 1994-04-18 | 1996-11-05 | Rolm Company | System and method for allocating memory resources where the category of a memory resource determines where on a circular stack a pointer to the memory resource is placed |
US5628016A (en) * | 1994-06-15 | 1997-05-06 | Borland International, Inc. | Systems and methods and implementing exception handling using exception registration records stored in stack memory |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5890181A (en) * | 1996-11-14 | 1999-03-30 | Kurzwell Applied Intelligence, Inc. | System and method for remotely grouping contents of an action history stack |
US5907709A (en) * | 1996-02-08 | 1999-05-25 | Inprise Corporation | Development system with methods for detecting invalid use and management of resources and memory at runtime |
US5949973A (en) * | 1997-07-25 | 1999-09-07 | Memco Software, Ltd. | Method of relocating the stack in a computer system for preventing overrate by an exploit program |
US5950221A (en) * | 1997-02-06 | 1999-09-07 | Microsoft Corporation | Variably-sized kernel memory stacks |
US5968169A (en) * | 1995-06-07 | 1999-10-19 | Advanced Micro Devices, Inc. | Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses |
US6006323A (en) * | 1998-05-20 | 1999-12-21 | Industrial Technology Research Institute | Intelligent multiple stack management unit |
US6070198A (en) * | 1995-10-19 | 2000-05-30 | Hewlett-Packard Company | Encryption with a streams-based protocol stack |
US6157999A (en) * | 1997-06-03 | 2000-12-05 | Motorola Inc. | Data processing system having a synchronizing link stack and method thereof |
US6161219A (en) * | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
US6941473B2 (en) * | 2000-02-04 | 2005-09-06 | International Business Machines Corporation | Memory device, stack protection system, computer system, compiler, stack protection method, storage medium and program transmission apparatus |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3212656B2 (en) * | 1991-02-08 | 2001-09-25 | 株式会社日立製作所 | Data processing system and microcomputer |
JPH0635733A (en) * | 1992-07-16 | 1994-02-10 | Fujitsu Ltd | Stack detection system |
JPH09167117A (en) * | 1995-12-15 | 1997-06-24 | Hitachi Ltd | Microcomputer and real time system using the microcomputer |
JPH09198258A (en) * | 1996-01-19 | 1997-07-31 | Nec Corp | Task stack overflow detecting circuit |
-
1998
- 1998-11-23 US US09/197,993 patent/US7380245B1/en not_active Expired - Fee Related
-
1999
- 1999-11-23 KR KR1019990052272A patent/KR100350484B1/en not_active IP Right Cessation
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
US5222220A (en) * | 1989-11-16 | 1993-06-22 | Mehta Hemang S | Microprocessor stack built-in guards |
US5535329A (en) * | 1991-06-21 | 1996-07-09 | Pure Software, Inc. | Method and apparatus for modifying relocatable object code files and monitoring programs |
US5572698A (en) * | 1994-04-18 | 1996-11-05 | Rolm Company | System and method for allocating memory resources where the category of a memory resource determines where on a circular stack a pointer to the memory resource is placed |
US5628016A (en) * | 1994-06-15 | 1997-05-06 | Borland International, Inc. | Systems and methods and implementing exception handling using exception registration records stored in stack memory |
US5630066A (en) * | 1994-12-20 | 1997-05-13 | Sun Microsystems, Inc. | System and method for locating object view and platform independent object |
US5968169A (en) * | 1995-06-07 | 1999-10-19 | Advanced Micro Devices, Inc. | Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses |
US6070198A (en) * | 1995-10-19 | 2000-05-30 | Hewlett-Packard Company | Encryption with a streams-based protocol stack |
US5907709A (en) * | 1996-02-08 | 1999-05-25 | Inprise Corporation | Development system with methods for detecting invalid use and management of resources and memory at runtime |
US5890181A (en) * | 1996-11-14 | 1999-03-30 | Kurzwell Applied Intelligence, Inc. | System and method for remotely grouping contents of an action history stack |
US5950221A (en) * | 1997-02-06 | 1999-09-07 | Microsoft Corporation | Variably-sized kernel memory stacks |
US6157999A (en) * | 1997-06-03 | 2000-12-05 | Motorola Inc. | Data processing system having a synchronizing link stack and method thereof |
US6161219A (en) * | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
US5949973A (en) * | 1997-07-25 | 1999-09-07 | Memco Software, Ltd. | Method of relocating the stack in a computer system for preventing overrate by an exploit program |
US6006323A (en) * | 1998-05-20 | 1999-12-21 | Industrial Technology Research Institute | Intelligent multiple stack management unit |
US6941473B2 (en) * | 2000-02-04 | 2005-09-06 | International Business Machines Corporation | Memory device, stack protection system, computer system, compiler, stack protection method, storage medium and program transmission apparatus |
Non-Patent Citations (2)
Title |
---|
Cowan et al., "StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks", Dec. 9, 1997, http://cse.ogi.edu/DISC/projects/immunix, 14 pages. * |
Simon L Peyton Jones and Jon Salkild, The Spineless Tagless G-machine, 1990, ACM Press, Series-Proceeding-Article, ISBN-0-89791-328-0, pp. 184-201. * |
Cited By (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849444B2 (en) * | 2004-12-21 | 2010-12-07 | National Instruments Corporation | Test executive with buffer overwrite detection for parameters of user-supplied code modules |
US20060136876A1 (en) * | 2004-12-21 | 2006-06-22 | National Instruments Corporation | Test executive with buffer overwrite detection for parameters of user-supplied code modules |
US20060143527A1 (en) * | 2004-12-21 | 2006-06-29 | Grey James A | Test executive with stack corruption detection, stack safety buffers, and increased determinism for uninitialized local variable bugs |
US7613954B2 (en) * | 2004-12-21 | 2009-11-03 | National Instruments Corporation | Test executive with stack corruption detection |
US20060242375A1 (en) * | 2005-04-25 | 2006-10-26 | Sharpe Edward J | Program stack handling |
US7797505B2 (en) * | 2005-04-25 | 2010-09-14 | Hewlett-Packard Development Company, L.P. | Program stack handling |
US11599634B1 (en) | 2006-02-09 | 2023-03-07 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US10331888B1 (en) * | 2006-02-09 | 2019-06-25 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US20070220355A1 (en) * | 2006-02-23 | 2007-09-20 | Ruscio Joseph F | Method for a checkpoint library to detect corruption by an application |
US7661016B2 (en) * | 2006-02-23 | 2010-02-09 | Librato, Inc. | Method for a checkpoint library to detect corruption by an application |
US20090150616A1 (en) * | 2007-12-10 | 2009-06-11 | International Business Machines Corporation | System and method of using threads and thread-local storage |
US7991962B2 (en) * | 2007-12-10 | 2011-08-02 | International Business Machines Corporation | System and method of using threads and thread-local storage |
US8239836B1 (en) * | 2008-03-07 | 2012-08-07 | The Regents Of The University Of California | Multi-variant parallel program execution to detect malicious code injection |
US20100017660A1 (en) * | 2008-07-15 | 2010-01-21 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
US8099636B2 (en) * | 2008-07-15 | 2012-01-17 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
US8245002B2 (en) * | 2008-10-08 | 2012-08-14 | International Business Machines Corporation | Call stack protection |
US20100088705A1 (en) * | 2008-10-08 | 2010-04-08 | International Business Machines Corporation | Call Stack Protection |
FR2974648A1 (en) * | 2011-04-29 | 2012-11-02 | St Microelectronics Rousset | Method for protecting RAM against attacks by injections of faults in integrated circuit, involves filling blank areas or unused areas of RAM with pattern, and monitoring entire RAM for possible modification of state of bit |
US20130013965A1 (en) * | 2011-07-08 | 2013-01-10 | Stmicroelectronics (Rousset) Sas | Microprocessor protected against stack overflow |
US11113384B2 (en) | 2011-07-08 | 2021-09-07 | Stmicroelectronics (Rousset) Sas | Stack overflow protection by monitoring addresses of a stack of multi-bit protection codes |
CN103116529B (en) * | 2011-07-18 | 2016-03-02 | 英飞凌科技股份有限公司 | The method and apparatus of heap memory damage is caused for detecting buffer overflow in real time |
US8930657B2 (en) | 2011-07-18 | 2015-01-06 | Infineon Technologies Ag | Method and apparatus for realtime detection of heap memory corruption by buffer overruns |
CN103116529A (en) * | 2011-07-18 | 2013-05-22 | 英飞凌科技股份有限公司 | Method and apparatus for realtime detection of heap memory corruption by buffer overruns |
US20130124917A1 (en) * | 2011-11-16 | 2013-05-16 | GM Global Technology Operations LLC | Recovering from stack corruption faults in embedded software systems |
US8677189B2 (en) * | 2011-11-16 | 2014-03-18 | GM Global Technology Operations LLC | Recovering from stack corruption faults in embedded software systems |
US9026866B2 (en) | 2012-04-23 | 2015-05-05 | Infineon Technologies Ag | Method and system for realtime detection of stack frame corruption during nested procedure calls |
US9223974B2 (en) * | 2013-07-09 | 2015-12-29 | Globalfoundries Inc. | Anti-viral compiler |
US20150020201A1 (en) * | 2013-07-09 | 2015-01-15 | International Business Machines Corporation | Anti-viral compiler |
US11146572B2 (en) | 2013-09-12 | 2021-10-12 | Virsec Systems, Inc. | Automated runtime detection of malware |
US11113407B2 (en) | 2014-06-24 | 2021-09-07 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US10354074B2 (en) | 2014-06-24 | 2019-07-16 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US9977897B2 (en) * | 2014-07-16 | 2018-05-22 | Leviathan Security Group, Inc. | System and method for detecting stack pivot programming exploit |
US20160196428A1 (en) * | 2014-07-16 | 2016-07-07 | Leviathan, Inc. | System and Method for Detecting Stack Pivot Programming Exploit |
US10120745B2 (en) | 2016-01-06 | 2018-11-06 | International Business Machines Corporation | Providing instructions to protect stack return addresses in a hardware managed stack architecture |
US9606855B1 (en) | 2016-01-06 | 2017-03-28 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
US9940475B2 (en) * | 2016-01-06 | 2018-04-10 | Intfrnational Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
US10229266B2 (en) | 2016-01-06 | 2019-03-12 | International Business Machines Corporation | Architected store and verify guard word instructions |
US10228992B2 (en) | 2016-01-06 | 2019-03-12 | International Business Machines Corporation | Providing instructions to facilitate detection of corrupt stacks |
US10248482B2 (en) | 2016-01-06 | 2019-04-02 | International Business Machines Corporation | Interlinking modules with differing protections using stack indicators |
US9891919B2 (en) | 2016-01-06 | 2018-02-13 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
US10114971B2 (en) * | 2016-01-06 | 2018-10-30 | International Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
US10496462B2 (en) | 2016-01-06 | 2019-12-03 | International Business Machines Corporation | Providing instructions to facilitate detection of corrupt stacks |
US9495237B1 (en) | 2016-01-06 | 2016-11-15 | International Business Machines Corporation | Detection of corruption of call stacks |
US10635441B2 (en) | 2016-01-06 | 2020-04-28 | International Business Machines Corporation | Caller protected stack return address in a hardware managed stack architecture |
US9582274B1 (en) | 2016-01-06 | 2017-02-28 | International Business Machines Corporation | Architected store and verify guard word instructions |
US9576128B1 (en) * | 2016-01-06 | 2017-02-21 | International Business Machines Corporation | Interlinking routines with differing protections using stack indicators |
US9514301B1 (en) | 2016-01-06 | 2016-12-06 | International Business Machines Corporation | Interlinking modules with differing protections using stack indicators |
US11409870B2 (en) | 2016-06-16 | 2022-08-09 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
US10586039B2 (en) * | 2017-09-01 | 2020-03-10 | Fujitsu Limited | Information processing apparatus |
Also Published As
Publication number | Publication date |
---|---|
KR20000052371A (en) | 2000-08-25 |
KR100350484B1 (en) | 2002-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7380245B1 (en) | Technique for detecting corruption associated with a stack in a storage device | |
US8234645B2 (en) | Deallocation of computer data in a multithreaded computer | |
US7627782B2 (en) | Multi-processing system and multi-processing method | |
US6529982B2 (en) | Locking of computer resources | |
US7512765B2 (en) | System and method for auditing memory | |
CN101271409A (en) | Live migration of a logical partition, method and product thereof | |
JPH0816457A (en) | Automatic garbage collection method | |
JPH0114611B2 (en) | ||
US6792559B1 (en) | Performing operations in an environment recreated from system dump information | |
EP0117930B1 (en) | Interactive work station with auxiliary microprocessor for storage protection | |
US20070234114A1 (en) | Method, apparatus, and computer program product for implementing enhanced performance of a computer system with partially degraded hardware | |
US20240095174A1 (en) | Method for detecting error of operating system kernel memory in real time | |
EP0070184B1 (en) | A method of testing memory | |
US20220066816A1 (en) | Work stealing for concurrent marking garbage collection with finger pointer | |
US7895493B2 (en) | Bus failure management method and system | |
US20160371501A1 (en) | Tracing processing activity | |
JPH06309236A (en) | Illegal write detecting circuit for memory | |
JPS5873099A (en) | Data processor | |
JP2904130B2 (en) | Program malfunction detection development support device and program malfunction detection method | |
Trinder et al. | Runtime system level fault tolerance for a distributed functional language. | |
JPS63143649A (en) | Malfunction preventing system due to external noise | |
JP2507579B2 (en) | Logging information storage method by occurrence frequency | |
US20020124206A1 (en) | Checking a computer system for blocked memory areas after termination of a process | |
JPH02253359A (en) | Data contents protection system for dynamic allocation area | |
CN117271134A (en) | Memory management method and device and electronic equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LOVETTE, STEVEN EUGENE;REEL/FRAME:009634/0810 Effective date: 19981123 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |