A method to detect and prevent memory overwrites across the memory chunks allocated within the process heap area.
Publication Date: 2010-May-31
The IP.com Prior Art Database
Background: Any software product/program is vulnerable to memory corruptions. Effects of memory corruption range from simple program failures to downtime of business services affecting customer business. Memory overwrite (either by application running in the process or by any other software servicing the application within that process) are the most frequent root cause for memory corruptions. When a memory illegal operation or access of memory beyond process address space is attempted, the operating system will generate memory violation signal and terminates the process by default. This protects the operating system from the illegal operations attempted by the process. Memory overwrites beyond the allocated memory area but within the address space of the process can lead to i) application data corruption and/or ii) access to a memory area beyond process address space resulting in abnormal process termination. In the former case the operating system cannot detect/prevent such overwrite operations (FIG 1), unless special mechanisms to detect and prevent it are incorporated in the system. In a mission critical application where the data of various software components are stored in the process heap, it is quite important to prevent such memory overwrites among the data structures within the process heap to ensure data integrity. What is the problem solved by your invention: This invention proposes a solution for memory overwrite (FIG 1) prevention within the process heap. Known solutions to this problem: Currently there are tools/facilities which identify and avoid memory overwrites, but they are known to use heavy memory and impact performance and are not recommended for use in a real time customer scenario(for e.g.: environment variable like MALLOCDEBUG=catch_overflow on AIX platform). A publication on Memory OverFlow Management proposes a solution to manage memory overflow. It involves a memory overflow manger which consists of Overflow protector. Overflow protector can adapt one of two methods to prevent overflow. i) remapper. Remapper may copy the contents pages(being overwritten) to another location that is safe from corruption and modify the page table to associate the new location with logical addresses utilized by the corresponding tasks to access the pages. ii) Task re-prioritizer. It copies memory for the task that may get affected by memory overflow into heap backups to prevent corruption and pauses those tasks. Drawbacks of the Memory OverFlow Manager This proposition is mainly focused on applying correction to memory overwrites by allocating additional memory to the task that is overwriting the memory. Checksum monitoring mechanism proposed to detect memory overwrite many have certain latency time between when the memory was overwritten and when it was detected by checksum monitor. Remapper approach can lead to memory shortage and performance implication if there are more number of tasks overwriting the memory. The remapped memory area again could be overwritten by another task which may imply more complex method of management the memory areas and associated tasks. Task re-prioritizer can also have performance implications if there are frequent overwrites by different tasks.