ABSTRACT
Many programs have latent bugs that cause the program to fail. In order to fix a failing program, is it crucial to be able to reproduce the failure consistently. However, reproducing a failure can be difficult and time-consuming, especially when the failure is discovered by a user in a deployed application.
We present ReCrash, an approach to reproduce failures efficiently, both locally and in deployed applications, without any changes to the host's environment, and with low execution overhead.
During execution, ReCrash efficiently stores part of the state of method arguments. If the program fails, ReCrash uses the stored information to create unit tests that reproduce the failure. This is effective because programs written in object-oriented style rely mostly on near-by state.
This demo presents ReCrashJ, an implementation of ReCrash for Java. We show the ReCrashJ Eclipse plug-in (for developers) and the ReCrashJ command-line modules (for deployed software).
- S. Artzi, S. Kim, and M. D. Ernst. Recrash: Making software failures reproducible by preserving object states. In ECOOP, pages 542--565, July 2008. Google ScholarDigital Library
- S. Artzi, J. Quinonez, A. Kieżun, and M. D. Ernst. A formal definition and evaluation of parameter immutability. ASE, 16(1):145--192, 2009. Google ScholarDigital Library
- J. Clause and A. Orso. A technique for enabling and supporting debugging of field failures. In ICSE, pages 261--270, May 2007. Google ScholarDigital Library
- C. Csallner and Y. Smaragdakis. JCrasher: an automatic robustness tester for Java. Software: Practice and Experience, 34(11):1025--1050, Sep. 2004. Google ScholarDigital Library
- C. Csallner and Y. Smaragdakis. Check 'n' Crash: Combining static checking and testing. In ICSE, pages 422--431, May 2005. Google ScholarDigital Library
- D. A. S. de Oliveira, J. R. Crandall, G. Wassermann, S. F. Wu, Z. Su, and F. T. Chong. ExecRecorder: VM-based full-system replay for attack analysis and system recovery. In ASID, pages 66--71, Oct. 2006. Google ScholarDigital Library
- G. W. Dunlap, S. T. King, S. Cinar, M. A. Basrai, and P. M. Chen. ReVirt: Enabling intrusion analysis through virtual-machine logging and replay. In OSDI, pages 211--224, Dec. 2002. Google ScholarDigital Library
- M. D. Ernst. Type annotations specification (jsr 308). http://pag.csail.mit.edu/jsr308/, Sep. 12, 2008.Google Scholar
- D. Geels, G. Altekar, S. Shenker, and I. Stoica. Replay debugging for distributed applications. In USENIX, pages 289--300, June 2006. Google ScholarDigital Library
- S. Narayanasamy, G. Pokam, and B. Calder. BugNet: Continuously recording program execution for deterministic replay debugging. In ISCA, pages 284--295, June 2005. Google ScholarDigital Library
- S. M. Srinivasan, S. Kandula, C. R. Andrews, and Y. Zhou. Flashback: A lightweight extension for rollback and deterministic replay for software debugging. In USENIX, pages 29--44, June/July 2004. Google ScholarDigital Library
- M. Xu, R. Bodik, and M. D. Hill. A "flight data recorder " for enabling full-system multiprocessor deterministic replay. In ISCA, pages 122--135, June 2003. Google ScholarDigital Library
Index Terms
- ReCrashJ: a tool for capturing and reproducing program crashes in deployed applications
Recommendations
ReCrash: Making Software Failures Reproducible by Preserving Object States
ECOOP '08: Proceedings of the 22nd European conference on Object-Oriented ProgrammingIt 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 ...
Predicting recurring crash stacks
ASE '12: Proceedings of the 27th IEEE/ACM International Conference on Automated Software EngineeringSoftware crash is one of the most severe bug manifestations and developers want to fix crash bugs quickly and efficiently. The Crash Reporting System (CRS) is widely deployed for this purpose. Even with the help of CRS, fixes are largely by manual ...
An Entropy Evaluation Approach for Triaging Field Crashes: A Case Study of Mozilla Firefox
WCRE '11: Proceedings of the 2011 18th Working Conference on Reverse EngineeringA crash is an unexpected termination of an application during normal execution. Crash reports record stack traces and run-time information once a crash occurs. A group of similar crash reports represents a crash-type. The triaging of crash-types is ...
Comments