Browse Prior Art Database

Real-Time Debugging Intercept for Memory Overruns

IP.com Disclosure Number: IPCOM000108628D
Original Publication Date: 1992-Jun-01
Included in the Prior Art Database: 2005-Mar-22
Document File: 2 page(s) / 88K

Publishing Venue

IBM

Related People

Cox, D: AUTHOR [+3]

Abstract

This article describes a method for providing a real-time debugging intercept which can notify the tester of a memory overrun as soon as it occurs. There is no way to verify that the subsetted memory in an OS/2* segment has not been corrupted. A process has access to memory at the segment level and can, therefore, access all subsetted memory associated with a segment it has access to. OS/2 does not provide any protection of memory at the subset level. Memory subsets can be over-written by any process with access to the same segment, and there is no way to know that an overrun has occurred.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Real-Time Debugging Intercept for Memory Overruns

       This article describes a method for providing a real-time
debugging intercept which can notify the tester of a memory overrun
as soon as it occurs.  There is no way to verify that the subsetted
memory in an OS/2* segment has not been corrupted.  A process has
access to memory at the segment level and can, therefore, access all
subsetted memory associated with a segment it has access to.  OS/2
does not provide any protection of memory at the subset level. Memory
subsets can be over-written by any process with access to the same
segment, and there is no way to know that an overrun has occurred.

      In order to debug applications with memory overrun errors,
there must be a way to signal that the overrun has occurred as soon
as it is detected.  In order to overcome this and other related
memory problems in our application systems, OfficeVision*/2 (OV/2)
Office built a Memory Management subsystem, providing a layer of
independence between applications programs and the OS/2 operating
system. This subsystem is described in (1).  Using this Memory
Management subsystem as the base, the subsystem was enhanced to
provide memory prefix and suffix information at the subset level.
This is described in (2).  Each subset of memory within this pool
maintains both a prefix block and a suffix block.  The prefix block
contains a unique block identifier and maintains the length of the
subset and the inverted length of the subset.

      Using this information, Memory Management can validate that
each subset of storage within a segment has not been corrupted by
ensuring that the prefix information is correct for each subset.  The
suffix block contains a unique block identifier, and length.
Cross-checked with the prefix block, the Memory Management subsystem
can determine if the memory block has been corrupted.  With each
request to Memory Management to work with a particular subset, or to
terminat...