Author
C. Liu, X. Zhang, J. Han, Y. Zhang, and B. Bhargava
Abstract
Recent software systems usually feature an automated failure reporting component, with which a huge number
of failures are collected from software end-users. With a
proper support of failure indexing, which identifies failures
due to the same fault, the collected failure data can help developers
prioritize failure diagnosis, among other utilities
of the failure data. Since crashing failures can be effectively
indexed by program crashing venues, current practice has
seen great success in prioritizing crashing failures.
A recent study of bug characteristics indicates that as excellent
memory checking tools are widely adopted, semantic
bugs and the resulting noncrashing failures have become
dominant. Unfortunately, the problem of how to index noncrashing
failures has not been seriously studied before. In
previous study, two techniques have been proposed to index
noncrashing failures, and they are T-PROXIMITY and
R-PROXIMITY. However, as T-PROXIMITY indexes failures
by the profile of the entire execution, it is generally not
effective because most information in the profile is fault irrelevant.
On the other hand, although R-PROXIMITY is
more effective than T-PROXIMITY, it relies on a sufficient
number of correct executions that may not be available in
practice. In this paper, we propose a dynamic slicing-based
approach, which does not require any correct executions,
and is comparably effective as R-PROXIMITY. A detailed
case study with gzip is reported, which clearly demonstrates the benefits of the proposed approach.