Predicting Method Crashes with Bytecode Operations – ISEC 2013

by Sunghun Kim, Thomas Zimmermann, Rahul Premraj, Nicolas Bettenburg, Shivkumar Shivaji

Software monitoring systems have high performance overhead because they typically monitor all processes of the running program. For example, to capture and replay crashes, most current systems monitor all methods; thus yielding a significant performance overhead. Lowering the number of methods being monitored to a smaller subset can dramatically reduce this overhead. We present an approach that can help arrive at such a subset by reliably identifying methods that are the most likely candidates to crash in a future execution of the software. Our approach involves learning patterns from features of methods that previously crashed to classify new methods as crash-prone or non-crash-prone. An evaluation of our approach on two large open source projects, ASPECTJ and ECLIPSE, shows that we can correctly classify crash-prone methods with an accuracy of 80-86%. Notably, we found that the classification models can also be used for cross-project prediction with virtually no loss in classification accuracy. In a further experiment, we demonstrate how a monitoring tool, RECRASH could take advantage of only monitoring crash-prone methods and thereby, reduce its performance overhead and maintain its ability to perform its intended tasks.

Download as PDF.

Reference

Sunghun Kim, Thomas Zimmermann, Rahul Premraj, Nicolas Bettenburg, Shivkumar Shivaji. Predicting Method Crashes with Bytecode Operations. In Proceedings of the 6th Annual India Software Engineering Conference (ISEC 2013), New Delhi, India, February 2013.

BibTeX Entry

@inproceedings{kim-isec-2013,
    title = "Predicting Method Crashes with Bytecode Operations",
    author = "Sunghun Kim and Thomas Zimmermann and Rahul Premraj and Nicolas Bettenburg and Shivkumar Shivaji",
    year = "2013",
    month = "February",
    booktitle = "Proceedings of the 6th Annual India Software Engineering Conference",
    location = "New Delhi, India",
}