  This paper proposes a supervised machine learning approach for predicting the
root cause of a given bug report. Knowing the root cause of a bug can help
developers in the debugging process - either directly or indirectly by choosing
proper tool support for the debugging task. We mined 54755 closed bug reports
from the issue trackers of 103 GitHub projects and applied a set of heuristics
to create a benchmark consisting of 10459 reports. A subset was manually
classified into three groups (semantic, memory, and concurrency) based on the
bugs' root causes. Since the types of root cause are not equally distributed, a
combination of keyword search and random selection was applied. Our data set
for the machine learning approach consists of 369 bug reports (122 concurrency,
121 memory, and 126 semantic bugs). The bug reports are used as input to a
natural language processing algorithm. We evaluated the performance of several
classifiers for predicting the root causes for the given bug reports. Linear
Support Vector machines achieved the highest mean precision (0.74) and recall
(0.72) scores. The created bug data set and classification are publicly
available.
