  Software bugs claim approximately 50% of development time and cost the global
economy billions of dollars. Once a bug is reported, the assigned developer
attempts to identify and understand the source code responsible for the bug and
then corrects the code. Over the last five decades, there has been significant
research on automatically finding or correcting software bugs. However, there
has been little research on automatically explaining the bugs to the
developers, which is essential but a highly challenging task. In this paper, we
propose Bugsplainer, a transformer-based generative model, that generates
natural language explanations for software bugs by learning from a large corpus
of bug-fix commits. Bugsplainer can leverage structural information and buggy
patterns from the source code to generate an explanation for a bug. Our
evaluation using three performance metrics shows that Bugsplainer can generate
understandable and good explanations according to Google's standard, and can
outperform multiple baselines from the literature. We also conduct a developer
study involving 20 participants where the explanations from Bugsplainer were
found to be more accurate, more precise, more concise and more useful than the
baselines.
