System, Method, and Apparatus for Automatic Recording and Replaying of Application Executions
US-2015046909-A1 · Feb 12, 2015 · US
US9606820B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9606820-B2 |
| Application number | US-201414258928-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 22, 2014 |
| Priority date | Jun 29, 2010 |
| Publication date | Mar 28, 2017 |
| Grant date | Mar 28, 2017 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A replay core ensures that references to objects are removed at the same relative times and in the same relative order within a program's execution during both record time and replay time. A register method of a Finalizer class is modified to cause the register method to pass, to a specified programmatic mechanism, an object that was passed to the register method; modifying a finalize method of a class of the object to (a) cause the object to invoke a first method of the programmatic mechanism when the finalize method is invoked by a virtual machine and (b) prevent a remainder of the finalize method from completing under specified conditions, thereby causing a call to the finalize method to remain undispatched. The first method, when invoked, (a) adds, to the object, a reference that temporarily prevents the object from being deleted and (b) records an identifier of the object.
Opening claim text (preview).
What is claimed is: 1. A computer-implemented method comprising: modifying a register method of a Finalizer class to cause the register method to pass, to a specified programmatic mechanism, an object that was passed to the register method; modifying a finalize method of a class of the object to (a) cause the object to invoke a first method of the specified programmatic mechanism when the finalize method is invoked by a virtual machine and (b) prevent a remainder of the finalize method from completing under specified conditions, thereby causing a call to the finalize method to remain undispatched; wherein the first method, when invoked, (a) adds, to the object, a reference that temporarily prevents the object from being deleted and (b) records an identifier of the object. 2. The method of claim 1 , further comprising: determining whether any outstanding calls to finalize methods remain undispatched; in response to determining that one or more outstanding calls to finalize methods remain undispatched, invoking a second method of the specified programmatic mechanism; wherein the second method, when invoked, (a) invokes the finalize method in a manner that permits the finalize method to complete, and (b) removes the reference added to the object by the first method, thereby allowing the object to be deleted. 3. The method of claim 2 , wherein the finalize method is invoked at the same deterministic time during a replay time as the finalize method was invoked during a record time. 4. The method of claim 1 , wherein modifying the register method to cause the register method to pass the object to the specified programmatic mechanism comprises modifying the register method to cause the register method to pass the object to a programmatic mechanism that (a) generates the identifier and (b) stores an association between the identifier and the object. 5. The method of claim 1 , further comprising: in response to execution of a native proxy function that is called instead of an original native function whenever the original native function otherwise would have been called, (a) invoking the finalize method in a manner that permits the finalize method to complete, and (b) removing the reference added to the object by the first method, thereby allowing the object to be deleted. 6. The method of claim 5 , further comprising: during a replay time, replaying the identifiers of the objects that were finalized during a record time, wherein the invoking the finalize method in a manner that permits the finalize method to complete occurs at the same deterministic time during the record time as the finalize method was invoked during the record time. 7. The method of claim 1 , wherein the specified programmatic mechanism is a replay core, and further comprising: recording, by the replay core, execution of an application program that comprises the object; and replaying, by the replay core, execution of the application program, comprising ensuring that a finalize method of the object is called at the same relative time during both the recording and the replaying. 8. A volatile or non-volatile hardware computer-readable storage medium storing instructions which, when executed by a processor, cause the processor to: modify a register method of a Finalizer class to cause the register method to pass, to a specified programmatic mechanism, an object that was passed to the register method; modify a finalize method of a class of the object to (a) cause the object to invoke a first method of the specified programmatic mechanism when the finalize method is invoked by a virtual machine and (b) prevent a remainder of the finalize method from completing under specified conditions, thereby causing a call to the finalize method to remain undispatched; wherein the first method, when invoked, (a) adds, to the object, a reference that temporarily prevents the object from being deleted and (b) records an identifier of the object. 9. The volatile or non-volatile hardware computer-readable storage medium of claim 8 , wherein the instructions which, when executed by the processor, further cause the processor to: determine whether any outstanding calls to finalize methods remain undispatched; in response to determining that one or more outstanding calls to finalize methods remain undispatched, invoke a second method of the specified programmatic mechanism; wherein the second method, when invoked, (a) invokes the finalize method in a manner that permits the finalize method to complete, and (b) removes the reference added to the object by the first method, thereby allowing the object to be deleted. 10. The volatile or non-volatile hardware computer-readable storage medium of claim 9 , wherein the instructions cause the processor to invoke the finalize method at the same deterministic time during a replay time as the processor invoked the finalize method during a record time. 11. The volatile or non-volatile hardware computer-readable storage medium of claim 8 , wherein the instructions which cause the processor to modify the register method to cause the register method to pass the object to the specified programmatic mechanism further cause the processor to modify the register method to cause the register method to pass the object to a programmatic mechanism that (a) generates the identifier and (b) stores an association between the identifier and the object. 12. The volatile or non-volatile hardware computer-readable storage medium of claim 8 , further comprising instructions which, when executed by the processor, further cause the processor to: in response to execution of a native proxy function that is called instead of an original native function whenever the original native function otherwise would have been called, (a) invoke the finalize method in a manner that permits the finalize method to complete, and (b) remove the reference added to the object by the first method, thereby allowing the object to be deleted. 13. The volatile or non-volatile hardware computer-readable storage medium of claim 12 , wherein the instructions further cause the processor to: during a replay time, replay the identifiers of the objects that were finalized during a record time, wherein the instructions cause the processor to invoke the finalize method for the respective objects at the same deterministic time during the record time as the processor invoked the finalize method for the respective objects during the record time. 14. The volatile or non-volatile hardware computer-readable storage medium of claim 8 , wherein the specified programmatic mechanism is a replay core, and wherein the instructions further cause the processor to: record, by the replay core, execution of an application program that comprises the object; and replay, by the replay core, execution of the application program, wherein the instructions further cause the processor to ensure that a finalize method of the object is called at the same relative time during both the record and the replay.
where the computing system is a virtual computing platform, e.g. logically partitioned systems (virtual machines G06F9/45533; logical partitioning of resources G06F9/5077) · CPC title
Garbage collection, i.e. reclamation of unreferenced memory · CPC title
Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading · CPC title
Hypervisors; Virtual machine monitors · CPC title
Program code verification, e.g. Java bytecode verification, proof-carrying code (high-level semantic checks G06F8/43; prevention of errors by analysis, debugging or testing of software G06F11/36) · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.