kirancodes.me
To Proof Maintenance & Beyond!

Semantic crash bucketing

Rijnard van Tonder, John Kotheimer, Claire Le Goues

Abstract

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.

BibTeX
@inproceedings{vanTonder-al:ASE18,
  author    = {Rijnard van Tonder and
               John Kotheimer and
               Claire Le Goues},
  title     = {Semantic crash bucketing},
  booktitle = {ASE},
  pages     = {612--622},
  publisher = {{ACM}},
  year      = {2018},
}

Related papers