IP Library Granted Patent US 8,438,424
Granted Patent B2
US 8,438,424 · App. 13/404,316 · Granted May 7, 2013

Assessing computer programs using stack frame signatures

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,438,424
App. No.
13/404,316
Granted
May 7, 2013
Kind
B2
Abstract

A method of assessing a computer program under actual working conditions according to one embodiment comprises executing the computer program multiple times under actual working conditions, in response to each unhandled exception encountered during execution of the computer program, creating a corresponding stack frame signature to characterize the state of the program, and comparing the stack frame signatures to determine which unhandled exceptions are likely to have resulted from similar features.

Claims (80)

1. A computer-implemented method, comprising:

locating, by a processor, a stack pointer indicating a top of a call stack for an executed program;

locating a first base pointer of a current frame;

using the location of the stack pointer and the base pointer to determine a size of the current frame;

encoding the size into a corresponding symbol; and

adding the encoded symbol into an ordered list to form a stack frame signature with a historical execution path of the executed program.

2. The method of claim 1 , further comprising:

locating a next base pointer for a second frame in the call stack;

determining whether the next base pointer is valid;

determining the size of the second frame from the first and next base pointers, when the next base pointer is valid;

encoding the size of the second frame into a second corresponding symbol; and

adding the second encoded symbol to the stack frame signature.

3. The method of claim 2 , further comprising, when the next base pointer is not valid:

single-stepping through each subsequent stack location until a valid base pointer is found;

determining the size of the second frame from the size of the first base pointer and the valid base pointer;

encoding the size of the second frame into a second corresponding symbol; and

adding the second encoded symbol to the stack frame signature.

4. The method of claim 1 , further comprising:

determining one or more metrics about the current frame;

encoding each of the one or more metrics of the current frame into a corresponding symbol; and

adding the corresponding encoded symbol to the stack frame signature.

5. The method of claim 1 , further comprising:

determining a size for each stack frame in the call stack;

encoding each size for each stack frame into a corresponding symbol; and

adding the encoded corresponding symbols to the stack frame signature.

6. The method of claim 5 , further comprising:

truncating the stack frame signature to remove encoded symbols corresponding to older frames.

7. The method of claim 6 , further comprising:

retaining a fixed-length portion of the starting portion of the stack frame signature and a second fixed-length portion of the ending portion of the stack frame signature reference during the truncating.

8. A computer-readable non-transitory storage medium on which is stored a stack signature program for capturing and describing the state of an application program under actual working conditions, the stack signature program being registered with a target operating system that launches the stack signature program responsive to abnormal termination of the application program, the stack signature program comprising instructions that when executed cause a computing system to:

locate a stack pointer indicating a top of a call stack for an executed program;

locate a first base pointer of a current frame;

use the location of the stack pointer and of the base pointer to determine a size of the current frame;

encode the size into a corresponding symbol; and

add the encoded symbol into an ordered list to form a stack frame signature with a historical execution path of the executed program.

9. The storage medium of claim 8 , further comprising instructions that when executed cause the computing system to:

locate a next base pointer for a second frame in the call stack;

determine whether the next base pointer is valid;

determine the size of the second frame from the first and next base pointers, when the next base pointer is valid;

encode the size of the second frame into a second corresponding symbol; and

add the second encoded symbol to the stack frame signature.

10. The storage medium of claim 9 , further comprising instructions that when executed cause the computing system to, when the next base pointer is not valid:

single-step through each subsequent stack location until a valid base pointer is found;

determine the size of the second frame from the size of the first base pointer and the valid base pointer;

encode the size of the second frame into a second corresponding symbol; and

add the second encoded symbol to the stack frame signature.

11. The storage medium of claim 8 , further comprising instructions that when executed cause the computing system to:

determine one or more metrics about the current frame;

encode each of the one or more metrics of the current frame into a corresponding symbol; and

add the corresponding encoded symbol to the stack frame signature.

12. The storage medium of claim 8 , further comprising instructions that when executed cause the computing system to:

determine a size for each stack frame in the call stack;

encode each size for each stack frame into a corresponding symbol; and

add the encoded corresponding symbols to the stack frame signature.

13. The storage medium of claim 12 , further comprising instructions that when executed cause the computing system to:

truncate the stack frame signature to remove encoded symbols corresponding to older frames; and

retain a fixed-length portion of the starting portion of the stack frame signature and a second fixed-length portion of the ending portion of the stack frame signature reference during the truncating.

14. An apparatus, comprising:

a processor; and

a memory coupled to the processor, the memory to store a computer program to generate stack signatures that when executed by the processor is operative to locate a stack pointer indicating a top of a call stack for an executed program; locate a first base pointer of a current frame; use the location of the stack pointer and of the base pointer to determine a size of the current frame; encode the size into a corresponding symbol; and add the encoded symbol into an ordered list to form a stack frame signature with a historical execution path of the executed program.

15. The apparatus of claim 14 , the computer program operative to:

locate a next base pointer for a second frame in the call stack;

determine whether the next base pointer is valid;

determine the size of the second frame from the first and next base pointers, when the next base pointer is valid;

encode the size of the second frame into a second corresponding symbol; and add the second encoded symbol to the stack frame signature.

16. The apparatus of claim 15 , the computer program operative to, when the next base pointer is not valid:

single-step through each subsequent stack location until a valid base pointer is found;

determine the size of the second frame from the size of the first base pointer and the valid base pointer;

encode the size of the second frame into a second corresponding symbol; and add the second encoded symbol to the stack frame signature.

17. The apparatus of claim 14 , the computer program operative to:

determine one or more metrics about the current frame;

encode each of the one or more metrics of the current frame into a corresponding symbol; and

add the corresponding encoded symbol to the stack frame signature.

18. The apparatus of claim 14 , the computer program operative to:

determine a size for each stack frame in the call stack;

encode each size for each stack frame into a corresponding symbol; and add the encoded corresponding symbols to the stack frame signature.

19. The apparatus of claim 18 , the computer program operative to:

truncate the stack frame signature to remove encoded symbols corresponding to older frames.

20. The apparatus of claim 19 , the computer program operative to:

retain a fixed-length portion of the starting portion of the stack frame signature and a second fixed-length portion of the ending portion of the stack frame signature reference during the truncating.

Assignments (6)
RELEASE OF SECURITY INTERESTS Recorded Sep 13, 2024
From: BANK OF AMERICA, N.A.
To: CNET MEDIA, INC.
Reel/Frame 068968/0400 →
FIRST LIEN SECURITY AGREEMENT Recorded Dec 3, 2021
From: CNET MEDIA, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 058300/0869 →
CHANGE OF NAME Recorded Apr 20, 2021
From: RV CAROUSEL HOLDINGS, INC.
To: CNET MEDIA, INC.
Reel/Frame 055974/0631 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2020
From: CBS INTERACTIVE INC.
To: RV CAROUSEL HOLDINGS, INC.
Reel/Frame 054526/0426 →
CHANGE OF NAME Recorded Nov 23, 2020
From: CNET NETWORKS, INC.
To: CBS INTERACTIVE INC.
Reel/Frame 054442/0890 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2020
From: TECHTRACKER, INC.
To: CNET NETWORKS, INC.
Reel/Frame 054418/0175 →