×

Instrumenting software for enhanced diagnosability

  • US 8,141,052 B2
  • Filed: 04/02/2007
  • Issued: 03/20/2012
  • Est. Priority Date: 05/09/2003
  • Status: Active Grant
First Claim
Patent Images

1. In a computer system comprising an operating system and compiled software that calls one or more routines, a method of providing a more robust system with enhanced error diagnosis capabilities by instrumenting the compiled software to include diagnostic information so that when a routine writes data beyond a memory allocation an origin of a call to the routines may be more easily and uniquely identified, the method comprising acts of:

  • unassembling the compiled software into a plurality of instructions;

    searching the unassembled software for one or more instructions that identify at least one original call to a routine of interest, wherein the at least one original call comprises a parameter portion which identifies a pool tag and a routine portion which requests a tagged allocation of memory using the pool tag;

    modifying the at least one original call to arrive at a modified call which requests a tagged allocation of memory using a unique tag identifier, wherein the act of modifying includes substituting the parameter portion of the original call with a new parameter portion which identifies the unique tag identifier instead of the pool tag, such that the unique tag identifier uniquely identifies the at least one original call as the call that requested a tagged allocation of memory with the unique tag identifier;

    recording diagnostic information and the at least one original call so that the at least one original call may subsequently be identified in the compiled software by the unique tag identifier, wherein the diagnostic information identifies modifications made to the at least one original call to arrive at the modified call, including the substitution of the parameter portion of the original call with the new parameter portion which identifies the unique tag identifier instead of the pool tag, wherein the diagnostic information includes a mapping between the unique tag identifier and the pool tag, as well as an association of the unique tag identifier with an offset in the compiled code where the modification was made;

    executing the compiled software, including the modified call, resulting in a request for a tagged allocation of memory using the unique tag identifier;

    identifying a memory error with respect to a tagged memory location corresponding to the unique tag identifier; and

    using the recorded diagnostic information to identify the at least one original call based on the unique tag identifier.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×