IP Library Granted Patent US 8,402,318
Granted Patent B2
US 8,402,318 · App. 12/729,944 · Granted Mar 19, 2013

Systems and methods for recording and replaying application execution

Inventors: Jason Nieh (New York, NY); Nicolas Viennot (New York, NY); Oren Laadan (New York, NY)
Assignee: The Trustees of Columbia University in the City of New York
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,402,318
App. No.
12/729,944
Granted
Mar 19, 2013
Kind
B2
Abstract

A method for recording and replaying execution of an application running on a computer system using a program module is provided. The method includes recording events which result from the execution of the application including a non-deterministic event, wherein the program module deterministically records the non-deterministic event, saving the recorded events for deterministic replay of the recorded execution, restoring the saved recorded events, and deterministically replaying the recorded execution of the application.

Claims (45)

1. A method for recording execution of an application running on a computer system using a program module, the method comprising:

detecting a non-deterministic event associated with a process of the application;

deferring recordation of the non-deterministic event until the process enters a kernel mode, wherein the process enters the kernel mode at an occurrence of a deterministic event;

when the process enters the kernel mode, recording the non-deterministic event;

and saving the recorded event for deterministic replay.

2. The method of claim 1 , wherein the program module comprises a dynamically loaded kernel module.

3. The method of claim 1 , further comprising providing, by the program module, a virtual execution environment for encapsulating one or more processes of the application in a self-contained unit.

4. The method of claim 3 , further comprising:

suspending live execution of the application;

saving a live execution state of the application; and

resuming execution of the application in the virtual execution environment.

5. The method of claim 1 , further comprising:

identifying a plurality of non-deterministic events relating to a shared resource;

recording an ordering of the plurality of non-deterministic events for the shared resource; and

storing the recorded ordering of the plurality of non-deterministic events for the shared resource for deterministic replay.

6. The method of claim 1 , wherein detecting the non-deterministic event associated with the process comprises detecting a signal addressed to the process of the application.

7. The method of claim 1 , wherein detecting the non-deterministic event associated with the process comprises detecting a request for transfer of access right to a page in a shared memory to another process of the application.

8. The method of claim 1 , further comprising:

restoring the saved recorded event; and

deterministically replaying the recorded event.

9. The method of claim 1 , wherein the process is configured to enters the kernel mode when the process invokes a system call, accesses a memory address that causes a memory fault, or attempts to perform a division by zero.

10. The method of claim 5 , wherein identifying the plurality of non-deterministic events relating to the shared resource comprises detecting a plurality of system calls for operating on a pipe between processes of the application.

11. The method of claim 5 , wherein identifying the plurality of non-deterministic events relating to the shared resource comprises detecting a plurality of system calls for modifying memory layout.

12. The method of claim 6 , wherein the signal is addressed to the process of the application by another process of the application running on the computer system.

13. A system for recording execution of an application, the system comprising:

a processor for running:

the application; and

a program module, wherein the program module is configured to:

detect a non-deterministic event associated with a process of the application;

defer recordation of the non-deterministic event until the process enters a kernel mode, wherein the process enters the kernel mode at an occurrence of a deterministic event;

when the process enters the kernel mode, record the non-deterministic event; and

save the recorded event for deterministic replay.

14. The system of claim 13 , wherein the program module is configured to provide a virtual execution environment for encapsulating one or more processes of the application in a self-contained unit.

15. The system of claim 14 , wherein the program module is further configured to:

suspend live execution of the application;

save the live execution state of the application; and

resume execution of the application in the virtual execution environment.

16. The system of claim 13 , wherein the non-deterministic event comprises a receipt of a signal addressed to the process of the application.

17. The system of claim 13 , further comprising a shared memory, wherein the non-deterministic event comprises a receipt of a request for transfer of access right to a page in the shared memory to another process.

18. The system of claim 13 , wherein the program module is configured to:

identify a plurality of non-deterministic events relating to a shared resource;

record an ordering of the plurality of non-deterministic events for the shared resource; and

store the recorded ordering of the plurality of non-deterministic events for the shared resource for deterministic replay.

19. The system of claim 18 , wherein the plurality of non-deterministic events relating to the shared resource comprises a plurality of system calls for accessing shared mapped files.

20. The system of claim 18 , wherein the plurality of non-deterministic events relating to the shared resource comprises a plurality of system calls for operating on a pipe between processes of the application.

Assignments (2)
CONFIRMATORY LICENSE Recorded Apr 10, 2015
From: COLUMBIA UNIVERSITY
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 035412/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2010
From: NIEH, JASON; VIENNOT, NICOLAS; LAADAN, OREN
To: THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK
Reel/Frame 024440/0568 →
Continuity (2)
Provisional Application 61162873 · Mar 24, 2009
Related Publication 20100251031A1 · Sep 30, 2010