Conference Paper

Identifying Crashing Fault Residence Based on Cross Project Model.

Zhou Xu, Tao Zhang, Yifeng Zhang, Yutian Tang, Jin Liu, Xiapu Luo, Jacky W. Keung, Xiaohui Cui

Abstract

Analyzing the crash reports recorded upon software crashes is a critical activity for software quality assurance. Predicting whether or not the fault causing the crash (crashing fault for short) resides in the stack traces of crash reports can speed-up the program debugging process and determine the priority of the debugging efforts. Previous work mostly collected label information from bug-fixing logs, and extracted crash features from stack traces and source code to train classification models for the Identification of Crashing Fault Residence (ICFR) of newly-submitted crashes. However, labeled data are not always fully available in real applications. Hence the classifier training is not always feasible. In this work, we make the first attempt to develop a cross project ICFR model to address the data scarcity problem. This is achieved by transferring the knowledge from external projects to the current project via utilizing a state-of-the-art Balanced Distribution Adaptation (BDA) based transfer learning method. BDA not only combines both marginal distribution and conditional distribution across projects but also assigns adaptive weights to the two distributions for better adjusting specific cross project pair. The experiments on 7 software projects show that BDA is superior to 9 baseline methods in terms of 6 indicators overall. Index Terms-crashing fault, stack trace, transfer learning, cross project model I. I NTRODUCTION Due to the complex program structure, software products may well contain faults (or bugs) upon release. The faults have high risks to activate the software crash. Once a crash is triggered, the system will automatically generate a crash report (usually the stack trace) to record the corresponding status information of the program execution at that time. Fixing the fault causing the crash (crashing fault for short) is a critical task for software quality assurance. To achieve this purpose, developers need to effectively identify the position of the crashing fault in the source code. This process is called crash localization (or fault localization) [1]. Generally, crash localization utilizes the information of the stack trace and the source code

Keywords