JVM Independent Replay in Java

  • Authors:
  • Viktor Schuppan;Marcel Baur;Armin Biere

  • Affiliations:
  • Computer Systems Institute, ETH Zentrum RZ H, CH-8092 Zürich, Switzerland;Computer Systems Institute, ETH Zentrum RZ H, CH-8092 Zürich, Switzerland;Computer Systems Institute, ETH Zentrum RZ H, CH-8092 Zürich, Switzerland

  • Venue:
  • Electronic Notes in Theoretical Computer Science (ENTCS)
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Deterministic replay can help to understand the cause of a failing execution of a multi-threaded program. Stepwise browsing of a counterexample serves the same purpose in the context of static and dynamic checking. In this paper we present a tool for deterministic replay of a multi-threaded execution of a Java program. The replay engine is independent of a specific JVM. We also suggest a language to describe thread schedules. Such schedules can be produced either directly by a tool or virtual machine or can, given some additional information, be extracted from a bytecode trace. Thus, off-the-shelf debuggers can be used for both, cyclic debugging of multi-threaded Java programs, and for browsing of concurrent execution traces produced by many checking tools. Experimental results show that correct replay can be performed with acceptable overhead across a number of virtual machines. Plug-ins have been implemented to generate schedules automatically for Java PathFinder and for JNuke.