IP Library Granted Patent US 7,930,684
Granted Patent B2
US 7,930,684 · App. 11/248,881 · Granted Apr 19, 2011

System and method for logging and replaying asynchronous events

Assignee: Symantec Operating Corporation
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 7,930,684
App. No.
11/248,881
Granted
Apr 19, 2011
Kind
B2
Abstract

A system, method, and computer-accessible medium for logging and replaying asynchronous events are disclosed. One or more asynchronous events occurring during execution of a first instance of a computer program are logged. In logging the asynchronous events, a respective location in the execution of the first instance at which each of the one or more asynchronous events occurs is determined. A respective synchronous event preceding each asynchronous event is also determined. The asynchronous events are replayed during execution of a second instance of the computer program. In replaying each asynchronous event, the second instance is instrumented at the respective location during the execution of the second instance after detecting the preceding synchronous event.

Claims (63)

1. A method comprising:

using a computer to perform:

logging one or more asynchronous events occurring during execution of a first instance of a computer program, comprising, for each of the one or more asynchronous events:

determining a respective location in the execution of the first instance at which the asynchronous event occurs; and

determining a respective synchronous event preceding the asynchronous event, wherein the respective synchronous event preceding the asynchronous event comprises a nearest synchronous event preceding the location at which the asynchronous event occurs in the execution of the first instance; and

replaying the one or more asynchronous events during execution of a second instance of the computer program, comprising, for each of the one or more asynchronous events:

detecting the respective synchronous event preceding the asynchronous event in the execution of the second instance; and

instrumenting the second instance at the respective location during the execution of the second instance after detecting the respective synchronous event, wherein instrumenting the second instance comprises:

determining an interval between the nearest synchronous event and the asynchronous event in the execution of the first instance;

if the interval is smaller than a threshold, inserting a breakpoint in the second instance; and

if the interval is not smaller than the threshold, entering a pre-breakpoint state to delay insertion of the breakpoint in the second instance.

2. The method of claim 1 ,

wherein logging the one or more asynchronous events further comprises, for each of the one or more asynchronous events, determining an original set of context values at the respective location in the execution of the first instance;

wherein replaying the one or more asynchronous events further comprises determining a current set of context values at each breakpoint during the execution of the second instance; and

wherein replaying the one or more asynchronous events further comprises, for each of the one or more asynchronous events, calling a signal handler function for the asynchronous event if the original set of context values for the asynchronous event match the current set of context values at the breakpoint for the asynchronous event.

3. The method of claim 1 ,

wherein replaying the one or more asynchronous events further comprises separating the second instance of the computer program into a plurality of execution blocks, wherein the plurality of execution blocks are separated by the synchronous events;

wherein instrumenting the second instance comprises, for each of the one or more asynchronous events, instrumenting the second instance upon entry to the execution block comprising the asynchronous event.

4. The method of claim 1 ,

wherein each of the respective locations in the execution of the first instance comprises a respective value of a performance counter at which the respective asynchronous event occurs.

5. The method of claim 1 ,

wherein the one or more asynchronous events comprise interactions between the first instance of the computer program and one or more external programs, wherein the interactions are initiated by the one or more external programs.

6. A non-transitory, computer-accessible storage medium comprising program instructions, wherein the program instructions are computer-executable to implement:

logging one or more asynchronous events occurring during execution of a first instance of a computer program, comprising, for each of the one or more asynchronous events:

determining a respective location in the execution of the first instance at which the asynchronous event occurs; and

determining a respective synchronous event preceding the asynchronous event, wherein the respective synchronous event preceding the asynchronous event comprises a nearest synchronous event preceding the location at which the asynchronous event occurs in the execution of the first instance; and

replaying the one or more asynchronous events during execution of a second instance of the computer program, comprising, for each of the one or more asynchronous events:

detecting the respective synchronous event preceding the asynchronous event in the execution of the second instance; and

instrumenting the second instance at the respective location during the execution of the second instance after detecting the respective synchronous event, wherein instrumenting the second instance comprises:

determining an interval between the nearest synchronous event and the asynchronous event in the execution of the first instance;

if the interval is smaller than a threshold, inserting a breakpoint in the second instance; and

if the interval is not smaller than the threshold, entering a pre-breakpoint state to delay insertion of the breakpoint in the second instance.

7. The non-transitory, computer-accessible storage medium of claim 6 ,

wherein logging the one or more asynchronous events further comprises, for each of the one or more asynchronous events, determining an original set of context values at the respective location in the execution of the first instance;

wherein replaying the one or more asynchronous events further comprises determining a current set of context values at each breakpoint during the execution of the second instance; and

wherein replaying the one or more asynchronous events further comprises, for each of the one or more asynchronous events, calling a signal handler function for the asynchronous event if the original set of context values for the asynchronous event match the current set of context values at the breakpoint for the asynchronous event.

8. The non-transitory, computer-accessible storage medium of claim 6 ,

wherein replaying the one or more asynchronous events further comprises separating the second instance of the computer program into a plurality of execution blocks, wherein the plurality of execution blocks are separated by the synchronous events;

wherein instrumenting the second instance comprises, for each of the one or more asynchronous events, instrumenting the second instance upon entry to the execution block comprising the asynchronous event.

9. The non-transitory, computer-accessible storage medium of claim 6 ,

wherein each of the respective locations in the execution of the first instance comprises a respective value of a performance counter at which the respective asynchronous event occurs.

10. A system comprising:

a first server comprising a first CPU and a first memory, wherein the first memory stores a first instance of a computer program which is executable by the first CPU, and wherein the first memory stores first program instructions which are executable by the first CPU to:

log one or more asynchronous events occurring during execution of the first instance of the computer program, comprising, for each of the one or more asynchronous events:

determining a respective location in the execution of the first instance at which the asynchronous event occurs; and

determining a respective synchronous event preceding the asynchronous event, wherein the respective synchronous event preceding the asynchronous event comprises a nearest synchronous event preceding the location at which the asynchronous event occurs in the execution of the first instance; and

a second server comprising a second CPU and a second memory, wherein the second memory stores a second instance of the computer program which is executable by the second CPU, and wherein the second memory stores second program instructions which are executable by the second CPU to:

replay the one or more asynchronous events during execution of the second instance of the computer program, comprising, for each of the one or more asynchronous events:

detecting the respective synchronous event preceding the asynchronous event in the execution of the second instance;

and

instrumenting the second instance at the respective location during the execution of the second instance after detecting the respective synchronous event, wherein instrumenting the second instance comprises:

determining an interval between the nearest synchronous event and the asynchronous event in the execution of the first instance;

if the interval is smaller than a threshold, inserting a breakpoint in the second instance; and

if the interval is not smaller than the threshold, entering a pre-breakpoint state to delay insertion of the breakpoint in the second instance.

11. The system of claim 10 ,

wherein, in logging the one or more asynchronous events, the first program instructions are further executable by the first CPU, for each of the one or more asynchronous events, to determine an original set of context values at the respective location in the execution of the first instance;

wherein, in replaying the one or more asynchronous events, the second program instructions are further executable by the second CPU to determine a current set of context values at each breakpoint during the execution of the second instance; and

wherein, in replaying the one or more asynchronous events, the second program instructions are further executable by the second CPU, for each of the one or more asynchronous events, to call a signal handler function for the asynchronous event if the original set of context values for the asynchronous event match the current set of context values at the breakpoint for the asynchronous event.

12. The system of claim 10 ,

wherein, in replaying the one or more asynchronous events, the second program instructions are further executable by the second CPU to separate the second instance of the computer program into a plurality of execution blocks, wherein the plurality of execution blocks are separated by the synchronous events;

wherein, in instrumenting the second instance, the second program instructions are further executable by the second CPU, for each of the one or more asynchronous events, to instrument the second instance upon entry to an execution block comprising the asynchronous event.

13. The system of claim 10 ,

wherein each of the respective locations in the execution of the first instance comprises a respective value of a performance counter at which the respective asynchronous event occurs.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 12, 2005
From: ROECK, GUENTER E.; PASHENKOV, SERGE; SHATS, SERGE
To: VERITAS OPERATING CORPORATION
Reel/Frame 017093/0775 →
Continuity (1)
Related Publication 20070083645A1 · Apr 12, 2007