{
  "patent_number": "US 9606820",
  "country": "US",
  "title": "How to Make Software Debugging Consistent Using Object Finalization Control",
  "original_title": "Ensuring determinism during programmatic replay in a virtual machine",
  "summary": "A method for virtual machines to pause and precisely replay the cleanup of computer objects, ensuring that debugging logs match the original program execution exactly.",
  "what_it_does": "When a program runs, it creates and deletes objects in memory. The process of deleting these objects, called finalization, often happens at unpredictable times because it depends on the virtual machine's internal schedule. This patent describes a way to intercept the finalization process by modifying the 'Finalizer' class. It forces the system to pause the deletion of an object, record exactly when it should have been deleted, and hold it in memory until the replay system decides it is the right time to finish the job. This ensures that when a developer replays a recorded session to find a bug, the timing of object cleanup is identical to the original run.",
  "what_it_does_not_cover": [
    "Does not cover general memory management or garbage collection outside of the specific context of programmatic replay.",
    "Does not cover hardware-level memory protection or physical RAM management.",
    "Does not cover non-deterministic systems that do not utilize a replay core or similar recording mechanism."
  ],
  "filed": "2014-04-22",
  "granted": "2017-03-28",
  "expires": null,
  "status": "active",
  "holder": "CA Inc",
  "holder_url": "https://patentbrief.org/company/ca-inc",
  "inventors": [
    {
      "name": "Jeffrey Daudel",
      "url": "https://patentbrief.org/inventor/jeffrey-daudel"
    },
    {
      "name": "Arpad Jakab",
      "url": "https://patentbrief.org/inventor/arpad-jakab"
    },
    {
      "name": "Marvin Justice",
      "url": "https://patentbrief.org/inventor/marvin-justice"
    },
    {
      "name": "Suman Cherukuri",
      "url": "https://patentbrief.org/inventor/suman-cherukuri"
    },
    {
      "name": "Dickey Singh",
      "url": "https://patentbrief.org/inventor/dickey-singh"
    },
    {
      "name": "Jonathan Lindo",
      "url": "https://patentbrief.org/inventor/jonathan-lindo"
    },
    {
      "name": "Humberto Yeverino",
      "url": "https://patentbrief.org/inventor/humberto-yeverino"
    }
  ],
  "times_cited": 4,
  "tags": [
    "software",
    "ai_ml"
  ],
  "abstract": "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.",
  "url": "https://patentbrief.org/patent/us/9606820/windows-subsystem-for-linux-wsl",
  "markdown_url": "https://patentbrief.org/patent/us/9606820/windows-subsystem-for-linux-wsl/md",
  "google_patents_url": "https://patents.google.com/patent/US9606820",
  "relatedPatents": []
}