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...
Main Authors: | , , |
---|---|
Other Authors: | |
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 |