Ensuring determinism during programmatic replay in a virtual machine

US9606820B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9606820-B2
Application numberUS-201414258928-A
CountryUS
Kind codeB2
Filing dateApr 22, 2014
Priority dateJun 29, 2010
Publication dateMar 28, 2017
Grant dateMar 28, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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.

Assignees

Inventors

Classifications

  • 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

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9606820B2 cover?
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…
Who is the assignee on this patent?
Ca Inc
What technology area does this patent fall under?
Primary CPC classification G06F12/0253. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 28 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).