IP Library › Granted Patent US 10,565,511
Granted Patent B1
US 10,565,511 · App. 16/148,810 · Granted Feb 18, 2020

Reverse debugging of software failures

Inventors: Weidong Cui (Redmond, WA); Xinyang Ge (Redmond, WA); Baris Can Cengiz Kasikci (Ann Arbor, MI); Ben Niu (Bellevue, WA); Ruoyu Wang (Tempe, AZ); Insu Yun (Atlanta, GA)
Assignee: Microsoft Technology Licensing, LLC
G06N5/04G06F11/364G06F11/3612G06F17/2785G06F17/2818G06F17/2827G06N3/082G06N5/027
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 10,565,511
App. No.
16/148,810
Granted
Feb 18, 2020
Kind
B1
Abstract

Debugging systems are configured to resolve both memory aliasing conditions in which a write instruction is directed to an unknown destination address, and concurrency conditions in which control flow information is collected for multiple, concurrently executing threads. Recorded state values corresponding to an application's prior execution and control flow information are both obtained.

Claims (36)

1. A computer system comprising: one or more processors; and

one or more computer-readable hardware storage devices having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to:

obtain a set of recorded state values corresponding to a prior execution of an application;

identify thin hardware trace data corresponding to the prior execution of the application, the thin hardware trace data comprising hardware trace data that includes (1) control flow information for a plurality of operation blocks of processor instructions that executed during the prior execution of the application and (2) a corresponding operation block timestamp for each operation block included in the plurality of operation blocks, wherein at least some of the operation blocks in the plurality of operation blocks are executed by different processor threads;

generate a single merged sequence listing of the plurality of operation blocks by sequentially ordering each operation block of the plurality of operation blocks based on its corresponding operation block timestamp; and

identify a particular program state at a corresponding time of execution for each of at least some of the processor instructions that executed during the prior execution of the application by at least performing an iterative backward and forward analysis of the processor instructions included in the single merged sequence listing of the plurality of operation blocks;

wherein the sequentially ordering of the plurality of operation blocks includes:

identifying at least two of overlapping operation blocks accessing a same particular memory location, the overlapping operation blocks having overlapping execution time periods based on their corresponding operation block timestamps.

2. The computer system of claim 1 , wherein execution of the computer-executable instructions further causes the computer system to:

as a part of sequentially ordering the plurality of operation blocks, identify at least two overlapping operation blocks having overlapping execution periods of time based on their corresponding operation block timestamps; and

arbitrarily order processor instructions for the overlapping operation blocks within the merged sequence listing such that at least two processor instructions in the merged sequence listing are ordered in a different sequence than how the at least two processor instructions were actually executed during the prior execution of the application.

3. The computer system of claim 1 , wherein execution of the computer-executable instructions further causes the computer system to:

as a part of sequentially ordering the plurality of operation blocks, identify overlapping operation blocks having overlapping execution periods of time based on their corresponding operation block timestamps;

upon determining that at least two of the overlapping operation blocks access a same particular memory location and that at least one of the at least two overlapping operation blocks includes a write operation, flag the particular memory location so that a value recovered from the particular memory location is not used to make an inference in the iterative backward and forward analysis of the set of processor instructions included in the single merged sequence listing of the plurality of operation blocks that executed during the prior execution of the application.

4. The computer system of claim 1 , wherein one or more particular processor instructions included within a particular one of the plurality of operation blocks are not provided with a corresponding timestamp but rather are grouped under a particular timestamp corresponding to the particular one operation block.

5. The computer system of claim 1 , wherein processor instructions included within a same operation block are all performed by a same thread.

6. The computer system of claim 1 , wherein the single merged sequence listing is scalable to accommodate any number of operation blocks.

7. The computer system of claim 1 , wherein the application is executing on a remote computer system and the set of recorded state values are received from the remote computer system or, alternatively, the application is executing on the computer system and the set of recorded state values are generated by the computer system.

8. The computer system of claim 1 , wherein a data inference graph is maintained as a part of the iterative backward and forward analysis, the data inference graph being used to track how a particular data value associated with a particular processor instruction included in the processor instructions is inferred in both forward and backward directions of the iterative backward and forward analysis.

9. A computer system comprising:

one or more processors; and

one or more computer-readable hardware storage devices having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to:

obtain a set of recorded state values corresponding to a prior execution of an application;

identify thin hardware trace data corresponding to the prior execution of the application, the thin hardware trace data comprising hardware trace data that includes (1) control flow information for a plurality of operation blocks of processor instructions that executed during the prior execution of the application and (2) a corresponding operation block timestamp for each operation block included in the plurality of operation blocks, wherein at least some of the operation blocks in the plurality of operation blocks are executed by different processor threads;

generate a single merged sequence listing of the plurality of operation blocks by sequentially ordering each operation block of the plurality of operation blocks based on its corresponding operation block timestamp;

as a part of sequentially ordering the plurality of operation blocks:

identify overlapping operation blocks having overlapping execution periods of time based on their corresponding operation block timestamps; and

upon determining that at least two of the overlapping operation blocks access a same particular memory location and that at least one of the at least two overlapping operation blocks includes a write instruction, flag the at least two overlapping operation blocks.

10. The computer system of claim 9 , wherein execution of the computer-executable instructions further causes the computer system to:

identify operation blocks that have been flagged, including the at least two overlapping operation blocks; and

determine whether an ordering for those flagged operation blocks is determinate or is indeterminate.

11. The computer system of claim 10 , wherein the ordering for those flagged operation blocks is determinate when other attributes of those flagged operation blocks are used to order those flagged operation blocks.

12. The computer system of claim 11 , wherein the other attributes include additional timestamp information sufficient to determine the ordering for those flagged operation blocks.

13. The computer system of claim 10 , wherein execution of the computer-executable instructions further causes the computer system to:

for operation blocks that are flagged and whose ordering is indeterminate, refrain from using data values associated with those indeterminate operation blocks to infer other data values during the iterative backward and forward analysis.

14. The computer system of claim 13 , wherein, as a result of refraining from using those data values to infer the other data values, those data values are locked from being used to infer the other data values.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2018
From: CUI, WEIDONG; GE, XINYANG; KASIKCI, BARIS CAN CENGIZ; NIU, BEN; WANG, RUOYU; YUN, INSU
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 047024/0734 →
Cited By (1)
US 12,259,809