Semantic crash bucketing

R van Tonder, J Kotheimer, C Le Goues - Proceedings of the 33rd ACM …, 2018 - dl.acm.org
Proceedings of the 33rd ACM/IEEE International Conference on Automated …, 2018dl.acm.org
Precise crash triage is important for automated dynamic testing tools, like fuzzers. At scale,
fuzzers produce millions of crashing inputs. Fuzzers use heuristics, like stack hashes, to cut
down on duplicate bug reports. These heuristics are fast, but often imprecise: even after
deduplication, hundreds of uniquely reported crashes can still correspond to the same bug.
Remaining crashes must be inspected manually, incurring considerable effort. In this paper
we present Semantic Crash Bucketing, a generic method for precise crash bucketing using …
Precise crash triage is important for automated dynamic testing tools, like fuzzers. At scale, fuzzers produce millions of crashing inputs. Fuzzers use heuristics, like stack hashes, to cut down on duplicate bug reports. These heuristics are fast, but often imprecise: even after deduplication, hundreds of uniquely reported crashes can still correspond to the same bug. Remaining crashes must be inspected manually, incurring considerable effort. In this paper we present Semantic Crash Bucketing, a generic method for precise crash bucketing using program transformation. Semantic Crash Bucketing maps crashing inputs to unique bugs as a function of changing a program (i.e., a semantic delta). We observe that a real bug fix precisely identifies crashes belonging to the same bug. Our insight is to approximate real bug fixes with lightweight program transformation to obtain the same level of precision. Our approach uses (a) patch templates and (b) semantic feedback from the program to automatically generate and apply approximate fixes for general bug classes. Our evaluation shows that approximate fixes are competitive with using true fixes for crash bucketing, and significantly outperforms built-in deduplication techniques for three state of the art fuzzers.
ACM Digital Library