IP Library Granted Patent US 10,185,645
Granted Patent B2
US 10,185,645 · App. 15/631,872 · Granted Jan 22, 2019

Resource lifetime analysis using a time-travel trace

Inventors: Jordi Mola (Bellevue, WA); Kenneth Walter Sykes (Oakton, VA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/3636G06F17/30979G06F17/30991
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,185,645
App. No.
15/631,872
Granted
Jan 22, 2019
Kind
B2
Abstract

Querying resource lifetime using a trace of program execution. An embodiment includes identifying a query expression targeted at least a portion of the trace of program execution. The query expression specifies at least (i) a data object representing a plurality of events identified in the trace, each event associated with one or more attributes relating to resource lifetime, and (ii) one or more conditions matching the one attributes relating to resource lifetime. In response to receiving the query expression, the query expression is processed based at least on an analysis of an identified subset of the trace. Based on processing the query expression, a result data set that includes or identifies at least one of the plurality of events that meets the one or more conditions is presented.

Claims (36)

1. A method, implemented at a computer system that includes one or more processors, for querying resource lifetime using a trace of program execution that enables replay of a prior execution of the program, the method comprising:

normalizing one or more application programming interface (API) calls identified in the trace of program execution into a corresponding event selected from a standard set of events;

identifying a query expression targeted at least a portion of the trace of program execution, the query expression specifying at least:

(i) a data object representing a plurality of events identified in the trace, each event associated with one or more attributes relating to resource lifetime, at least one of the plurality of events comprising at least one of the normalized one or more API calls, and

(ii) one or more conditions matching the one attributes relating to resource lifetime;

in response to identifying the query expression, processing the query expression based at least on an analysis of an identified subset of the trace, processing the query expression including replaying one or more portions of the prior execution of the program using the identified subset of the trace; and

based on processing the query expression, presenting a result data set that includes or identifies at least one of the plurality of events that meets the one or more conditions.

2. The method of claim 1 , wherein the query expression also specifies one or more functions that analyze resource lifetime associated with one or more of the plurality of events.

3. The method of claim 1 , wherein, for at least one of the plurality of events, the one or more attributes relating to resource lifetime include at least one of a handle, a memory address, one or more time stamps, or event type.

4. The method of claim 1 , wherein the one or more attributes relating to resource lifetime include event type, and wherein the event type comprises at least one of created, copied, moved, deleted, orphaned, or forgotten.

5. The method of claim 1 , wherein normalizing the one or more API calls identified in the trace comprises executing a user-supplied normalizing function.

6. A computer system, comprising:

one or more processors; and

one or more hardware computer-readable storage media having stored thereon computer-executable instructions that are executable by the one or more processors to cause the computer system to query resource lifetime using a trace of program execution that enables replay of a prior execution of the program, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least the following:

normalize one or more application programming interface (API) calls identified in the trace of program execution into a corresponding event selected from a standard set of events;

identify a query expression targeted at least a portion of the trace of program execution, the query expression specifying at least:

(i) a data object representing a plurality of events identified in the trace, each event associated with one or more attributes relating to resource lifetime, at least one of the plurality of events comprising at least one of the normalized one or more API calls, and

(ii) one or more conditions matching the one attributes relating to resource lifetime;

in response to identifying the query expression, process the query expression based at least on an analysis of an identified subset of the trace, processing the query expression including replaying one or more portions of the prior execution of the program using the identified subset of the trace; and

based on processing the query expression, present a result data set that includes or identifies at least one of the plurality of events that meets the one or more conditions.

7. The computer system of claim 6 , wherein the query expression also specifies one or more functions that analyze resource lifetime associated with one or more of the plurality of events.

8. The computer system of claim 6 , wherein, for at least one of the plurality of events, the one or more attributes relating to resource lifetime include at least one of a handle, a memory address, one or more time stamps, or event type.

9. The computer system of claim 8 , wherein the one or more attributes relating to resource lifetime include event type, and wherein the event type comprises at least one of created, copied, moved, deleted, orphaned, or forgotten.

10. The computer system of claim 6 , wherein normalizing the one or more API calls identified in the trace comprises executing a user-supplied normalizing function.

11. The computer system of claim 6 , wherein the at least one of the plurality of events identifies a resource that has a live reference after a specified time in the trace.

12. The computer system of claim 11 , wherein the result data set identifies at least one relationship between the at least one of the plurality of events and the live reference.

13. The computer system of claim 6 , the computer-executable instructions also including instructions that are executable to cause the computer system to apply a machine learning algorithm to the result data set.

14. The computer system of claim 13 , wherein the result data set identifies at least one result that is an outlier, based on having applied the machine learning algorithm to the result data set.

15. The computer system of claim 6 , wherein the least one of the plurality of events corresponds to receipt of untrusted input by the program during execution, and wherein the result data set is presented as part of a taint analysis.

16. A computer program product comprising one or more hardware storage devices having stored thereon computer-executable instructions that are executable by one or more processors to cause a computer system to query resource lifetime using a trace of program execution that enables replay of a prior execution of the program, the computer-executable instructions including instructions that are executable to cause the computer system to perform at least the following:

normalize one or more application programming interface (API) calls identified in the trace of program execution into a corresponding event selected from a standard set of events;

identify a query expression targeted at least a portion of the trace of program execution, the query expression specifying at least:

(i) a data object representing a plurality of events identified in the trace, each event associated with one or more attributes relating to resource lifetime, at least one of the plurality of events comprising at least one of the normalized one or more API calls, and

(ii) one or more conditions matching the one attributes relating to resource lifetime;

in response to identifying the query expression, process the query expression based at least on an analysis of an identified subset of the trace, processing the query expression including replaying one or more portions of the prior execution of the program using the identified subset of the trace; and

based on processing the query expression, present a result data set that includes or identifies at least one of the plurality of events that meets the one or more conditions.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2017
From: MOLA, JORDI; SYKES, KENNETH WALTER
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042799/0993 →
Continuity (4)
Continuation In Part 15591521 · May 10, 2017
Continuation In Part 15453060 · Mar 8, 2017
Continuation In Part 15453008 · Mar 8, 2017
Related Publication 20180260302A1 · Sep 13, 2018
Cited By (1)
US 12,277,049