Thesis of Thomas Durieux

From Runtime Failures to Patches : Study of Patch Generation in Production

Patch creation is one of the most important actions in the life cycle of an application. Creating patches is a time-consuming task. Not only because it is difficult to create a sound and valid patch, but also because it requires the intervention of humans. Indeed, a user must report the bug, and a developer must reproduce it and fix it, which takes much time. To address this problem, techniques that automate this task have been created. However, those techniques still require a developer to reproduce the bug and encode it as a failing test case. This requirement drastically reduces the applicability of the approaches since it still relies on humans. This thesis proposes new patch generation techniques that remove the human intervention for the patch generation. Our idea is to put as close as possible the patch generation in the production environment. We adopt this approach because the production environment contains all the data and human interactions that lead to the bug. In this thesis, we show how to exploit this data to detect bugs, generate and validate patches. We evaluate this approach on seven different benchmarks of real bugs collected from open-source projects. During the evaluation, we are particularly attentive to the number of generated patches, to their correctness, readability and to the time required for generating them. Our evaluation shows the applicability and feasibility of our approach to generate patches in the production environment without the intervention of a developer.

Jury

Directeurs de thèse : Lionel Seinturier et Martin Monperrus Rapporteurs : Paolo Tonella et Olivier Barais Examinateurs : Julia Lawall et Jean-Christophe Routier

Thesis of the team Spirals defended on 25/09/2018