Instrumenting software for enhanced diagnosability
First Claim
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.
2 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods are provided for instrumenting compiled software to include diagnostic information such that an origin of a call to one or more routines may be more easily identified. For example, a system is provided which unassembles or uncompiles software into a more readily identifiable instructional form, which is then searched to identify various calls to various routines of interest. Portions of the identified calls are then modified with diagnostic information that will identify the call. This diagnostic information and the call are then recorded so that the call may be subsequently traced back to its origin when, for example, an error occurs.
-
Citations
19 Claims
-
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 Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. One or more computer storage devices having stored thereon computer-executable instructions that, when executed by one or more processors of a computing system, cause the computing system to perform a method, comprising:
-
a computing system unassembling the compiled software into a plurality of instructions, wherein the computing system comprises one or more processors; the computing system 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; the computing system 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 identifier; the computing system 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 Dependent Claims (14, 15, 16, 17, 18)
-
-
19. A computer system comprising a processor operatively coupled to a memory and one or more computer storage devices having stored there on computer-executable instructions that, when executed by the processor, cause the computer system to perform a method, comprising:
-
a processor unassembling the compiled software into a plurality of instructions; the processor 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; the processor modifying at least-one of 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 identifier; the processor 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.
-
Specification