ReCrash: Making Crashes Reproducible

It is difficult to fix a problem without being able to reproduce it.However, reproducing a problem is often difficult and time-consuming.This paper proposes a novel algorithm, ReCrash, that generatesmultiple unit tests that reproduce a given program crash.ReCrash dynamically tracks method calls duri...

Full description

Bibliographic Details
Main Authors: Kim, Sunghun, Artzi, Shay, Ernst, Michael D.
Other Authors: Michael Ernst
Published: 2007
Online Access:http://hdl.handle.net/1721.1/39639
_version_ 1826196706950119424
author Kim, Sunghun
Artzi, Shay
Ernst, Michael D.
author2 Michael Ernst
author_facet Michael Ernst
Kim, Sunghun
Artzi, Shay
Ernst, Michael D.
author_sort Kim, Sunghun
collection MIT
description It is difficult to fix a problem without being able to reproduce it.However, reproducing a problem is often difficult and time-consuming.This paper proposes a novel algorithm, ReCrash, that generatesmultiple unit tests that reproduce a given program crash.ReCrash dynamically tracks method calls during every execution of the target program. If the program crashes, ReCrash saves information about the relevant method calls and uses the saved information to create unit tests reproducing the crash.We present reCrashJ an implementation of ReCrash for Java. reCrashJ reproducedreal crashes from javac, SVNKit, Eclipse JDT, 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 a second crash, at which point the test cases are generated.
first_indexed 2024-09-23T10:35:59Z
id mit-1721.1/39639
institution Massachusetts Institute of Technology
last_indexed 2024-09-23T10:35:59Z
publishDate 2007
record_format dspace
spelling mit-1721.1/396392019-04-12T09:30:42Z ReCrash: Making Crashes Reproducible Kim, Sunghun Artzi, Shay Ernst, Michael D. Michael Ernst Program Analysis It is difficult to fix a problem without being able to reproduce it.However, reproducing a problem is often difficult and time-consuming.This paper proposes a novel algorithm, ReCrash, that generatesmultiple unit tests that reproduce a given program crash.ReCrash dynamically tracks method calls during every execution of the target program. If the program crashes, ReCrash saves information about the relevant method calls and uses the saved information to create unit tests reproducing the crash.We present reCrashJ an implementation of ReCrash for Java. reCrashJ reproducedreal crashes from javac, SVNKit, Eclipse JDT, 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 a second crash, at which point the test cases are generated. 2007-11-20T15:45:09Z 2007-11-20T15:45:09Z 2007-11-20 MIT-CSAIL-TR-2007-054 http://hdl.handle.net/1721.1/39639 Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory 9 p. application/pdf application/postscript
spellingShingle Kim, Sunghun
Artzi, Shay
Ernst, Michael D.
ReCrash: Making Crashes Reproducible
title ReCrash: Making Crashes Reproducible
title_full ReCrash: Making Crashes Reproducible
title_fullStr ReCrash: Making Crashes Reproducible
title_full_unstemmed ReCrash: Making Crashes Reproducible
title_short ReCrash: Making Crashes Reproducible
title_sort recrash making crashes reproducible
url http://hdl.handle.net/1721.1/39639
work_keys_str_mv AT kimsunghun recrashmakingcrashesreproducible
AT artzishay recrashmakingcrashesreproducible
AT ernstmichaeld recrashmakingcrashesreproducible