kirancodes.me
To Proof Maintenance & Beyond!

Efficient checkpointing of java software using context-sensitive capture and replay

Guoqing Xu, Atanas Rountev, Yan Tang, Feng Qin

Abstract

Checkpointing and replaying is an attractive technique that has been used widely at the operating/runtime system level to provide fault tolerance. Applying such a technique at the application level can benefit a range of software engineering tasks such as testing of long-running programs, automated debugging, and dynamic slicing. We propose a checkpointing/replaying technique for Java that operates purely at the language level, without the need for JVM-level or OS-level support. At the core of our approach are static analyses that select, at certain program points, a safe subset of the program state to capture and replay. Irrelevant statements before the checkpoint are eliminated using control-dependence-based slicing; the remaining statements together with the captured run-time values are used to indirectly recreate the call stack of the original program at the checkpoint. At the checkpoint itself and at certain subsequent program points, the replaying version restores parts of the program state that are necessary for execution of the surrounding method. Our experimental studies indicate that the proposed static and dynamic analyses have the potential to reduce significantly the execution time for replaying, with low run-time overhead for checkpointing.

BibTeX
@inproceedings{Xu-al:FSE07,
  author    = {Guoqing Xu and
               Atanas Rountev and
               Yan Tang and
               Feng Qin},
  title     = {Efficient checkpointing of java software using context-sensitive capture and replay},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {85--94},
  publisher = {{ACM}},
  year      = {2007},
}

Related papers