IP Library Granted Patent US 8,156,379
Granted Patent B2
US 8,156,379 · App. 11/943,528 · Granted Apr 10, 2012

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,156,379
App. No.
11/943,528
Granted
Apr 10, 2012
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 (69)

1. A computer-implemented method, comprising:

tracing by a processor a call stack for an executed program;

generating a selected metric for each stack frame in the call stack;

encoding each selected metric into a corresponding symbol; and

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

2. A computer-implemented method according to claim 1 , wherein the selected metric comprises a length of each of the stack frames.

3. A computer-implemented method according to claim 2 , wherein the step of encoding each selected metric into a corresponding symbol comprises encoding the length of each of the stack frames in a positional notation system of the form base b, wherein b is greater than 2.

4. A computer-implemented method according to claim 3 , wherein b is equal to 36 so that each symbol can be represented using a single Arabic numeral or a single Latin letter.

5. A computer-implemented method according to claim 1 , wherein the selected metric comprises an identifier of a generic type of callee module corresponding to each of the stack frames.

6. A computer-implemented method according to claim 1 , wherein the selected metric comprises an identifier of a specific callee code module corresponding to each of the stack frames.

7. A computer-implemented method according to claim 1 , wherein the selected metric comprises an identifier of a callee library associated with each of the stack frames.

8. A computer-implemented method according to claim 1 , wherein the selected metric comprises an indication of a system call applicable to each of the stack frames.

9. A computer-implemented method according to claim 1 , wherein the selected metric comprises an indication of a peripheral driver module call applicable to each of the stack frames.

10. A computer-implemented method according to claim 1 , further comprising:

delimiting the series of encoded symbols so as to indicate the start and the end of the call stack.

11. A computer-implemented method according to claim 1 , further comprising:

filtering the stack frame signature by deleting symbols corresponding to stack frames associated with predetermined callee code modules.

12. A computer-implemented method according to claim 1 , further comprising:

filtering the stack frame signature by deleting symbols corresponding to stack frames associated with selected types of modules.

13. A computer-implemented method according to claim 1 , further comprising:

filtering the stack frame signature by deleting symbols corresponding to stack frames associated with system calls.

14. A computer-implemented method according to claim 1 , further comprising:

filtering the stack frame signature by deleting symbols corresponding to stack frames associated with calls to peripheral drivers.

15. A computer-implemented method according to claim 1 , further comprising:

truncating the stack frame signature so as to preserve only a selected portion of the signature.

16. A computer-implemented method according to claim 1 , wherein said encoding includes transforming the captured metric into a representation that is more compact than a binary representation, thereby facilitating human inspection and recognition of the stack frame signature.

17. A computer-implemented method according to claim 1 , wherein the stack frame signature formed by the step of assembling the series of encoded symbols into an ordered list does not comprise specific address information.

18. A computer-implemented method according to claim 1 , wherein the selected metric is a first selected metric, the method further comprising:

capturing a second selected metric with respect to each stack frame in the series, the second selected metric being different from the first selected metric;

encoding the second captured metric into a corresponding second symbol; and

appending the encoded second symbols to corresponding ones of the series of encoded symbols such that the stack frame signature reflects two captured metrics with respect to each stack frame in the series.

19. 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:

trace a call stack for an executed program;

generate a selected metric for each stack frame in the call stack;

encode each selected metric into a corresponding symbol; and

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

20. The storage medium of claim 19 , wherein the selected metric comprises a length of each of the stack frames.

21. The storage medium of claim 20 , further comprising instructions that when executed cause the computing system to encode the length of each of the stack frames in a positional notation system of the form base b, wherein b is greater than 2.

22. The storage medium of claim 21 , wherein b is equal to 36 so that each symbol can be represented using a single Arabic numeral or a single Latin letter.

23. The storage medium of claim 19 , wherein the selected metric comprises an identifier of a generic type of callee module corresponding to each of the stack frames.

24. The storage medium of claim 19 , wherein the selected metric comprises an identifier of a specific callee code module corresponding to each of the stack frames.

25. The storage medium of claim 19 , wherein the selected metric comprises an identifier of a callee library associated with each of the stack frames.

26. The storage medium of claim 19 , wherein the selected metric comprises an indication of a system call applicable to each of the stack frames.

27. The storage medium of claim 19 , wherein the selected metric comprises an indication of a peripheral driver module call applicable to each of the stack frames.

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

delimit the series of encoded symbols so as to indicate the start and the end of the call stack.

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

filter the stack frame signature by deleting symbols corresponding to stack frames associated with predetermined callee code modules.

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

filter the stack frame signature by deleting symbols corresponding to stack frames associated with selected types of modules.

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

filter the stack frame signature by deleting symbols corresponding to stack frames associated with system calls.

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

filter the stack frame signature by deleting symbols corresponding to stack frames associated with calls to peripheral drivers.

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

truncate the stack frame signature so as to preserve only a selected portion of the signature.

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

transform the captured metric into a representation that is more compact than a binary representation, thereby facilitating human inspection and recognition of the stack frame signature.

35. The storage medium of claim 19 , wherein the stack frame does not comprise specific address information.

36. The storage medium of claim 19 , wherein the selected metric is a first selected metric, the storage medium further comprising instructions that when executed cause the computing system to:

capture a second selected metric with respect to each stack frame in the series, the second selected metric being different from the first selected metric;

encode the second captured metric into a corresponding second symbol; and

append the encoded second symbols to corresponding ones of the series of encoded symbols such that the stack frame signature reflects two captured metrics with respect to each stack frame in the series.

37. 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 trace a call stack for an executed program, generate a selected metric for each stack frame in the call stack, encode each selected metric into a corresponding symbol, and assemble the encoded symbols into an ordered list to form a stack frame signature with a historical execution path of the executed program.

38. The apparatus of claim 27 , the selected metric comprising a length of each of the stack frames.

39. The apparatus of claim 27 , the computer program operative to encode the length of each of the stack frames in a positional notation system of the form base b, wherein b is greater than 2.

40. The apparatus of claim 27 , wherein b is equal to 36 so that each symbol can be represented using a single Arabic numeral or a single Latin letter.

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 →