ReCrash: Making Software Failures Reproducible by Preserving Object States

  • Authors:
  • Shay Artzi;Sunghun Kim;Michael D. Ernst

  • Affiliations:
  • MIT Computer Science and Artificial Intelligence Laboratory, , Cambridge, USA 02139;MIT Computer Science and Artificial Intelligence Laboratory, , Cambridge, USA 02139;MIT Computer Science and Artificial Intelligence Laboratory, , Cambridge, USA 02139

  • Venue:
  • ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

It is very hard to fix a software failure without being able to reproduce it. However, reproducing a failure is often difficult and time-consuming. This paper proposes a novel technique, ReCrash, that generates multiple unit tests that reproduce a given program failure. During every execution of the target program, ReCrash stores partial copies of method arguments in memory. If the program fails (e.g., crashes), ReCrash uses the saved information to create unit tests reproducing the failure.We present ReCrashJ, an implementation of ReCrash for Java. ReCrashJ reproduced real crashes from Javac, SVNKit, Eclipsec, and BST. ReCrashJ is efficient, incurring 13%---64% performance overhead. If this overhead is unacceptable, then ReCrashJ has another mode that has negligible overhead until a crash occurs and 0%---1.7% overhead until the crash occurs for a second time, at which point the test cases are generated.