Software crash is common. When a crash occurs, software developers
can receive a report upon user permission. A crash report
typically includes a call stack at the time of crash. An important
step of debugging a crash is to identify faulty functions, which is
often a tedious and labor-intensive task. In this paper, we propose
CrashLocator, a method to locate faulty functions using the crash
stack information in crash reports. It deduces possible crash traces
(the failing execution traces that lead to crash) by expanding the
crash stack with functions in static call graph. It then calculates
the suspiciousness of each function in the approximate crash traces.
The functions are then ranked by their suspiciousness scores
and are recommended to developers for further investigation. We
evaluate our approach using real-world Mozilla crash data. The
results show that our approach is effective: we can locate 50.6%,
63.7% and 67.5% of crashing faults by examining top 1, 5 and 10
functions recommended by CrashLocator, respectively. Our approach
outperforms the conventional stack-only methods significantly.