GUO Lisong
Direction de recherche : Julia LAWALL
Co-encadrement : MULLER Gilles
Aider le mainteneur d'applications libres à répondre aux rapports d'erreur
Lorsqu'une erreur survient dans le noyau Linux, celui-ci émet un rapport d’erreur appelé "kernel oops" contenant le contexte d’exécution de cette erreur. Les kernel oops décrivent des erreurs réelles de Linux, permettent de classer les efforts de débogage par ordre de priorité et de motiver la conception d’outils permettant d'améliorer la fiabilité du code de Linux. Néanmoins, les informations contenues dans un kernel oops n’ont de sens que si elles sont représentatives et qu'elles peuvent être interprétées correctement. Dans cette thèse, nous étudions une collection de kernel oops provenant d'un dépôt maintenu par Red Hat sur une période de huit mois. Nous considérons l’ensemble des caractéristiques de ces données, dans quelle mesure ces données reflètent d’autres informations à propos de Linux et l’interprétation des caractéristiques pouvant être pertinentes pour la fiabilité de Linux. Nous constatons que ces données sont bien corrélées à d’autres informations à propos de Linux, cependant, elles souffrent parfois de problèmes de duplication et de manque d’informations. Nous identifions également quelques pièges potentiels lors de l'étude des fonctionnalités, telles que les causes d'erreurs fréquentes et les causes d'applications défaillant fréquemment. En outre, un kernel oops fournit des informations précieuses et de première main pour un mainteneur du noyau Linux lui permettant d'effectuer le débogage post-mortem car il enregistre l’état du noyau Linux au moment du crash. Cependant, le débogage sur la seule base des informations contenues dans un kernel oops est difficile. Pour aider les développeurs avec le débogage, nous avons conçu une solution afin d'obtenir la ligne fautive à partir d’un kernel oops, i.e., la ligne du code source qui provoque l'erreur. Pour cela, nous proposons un nouvel algorithme basé sur la correspondance de séquences approximative utilisé dans le domaine de bioinformatique. Cet algorithme permet de localiser automatiquement la ligne fautive en se basant sur le code machine à proximité de celle-ci et inclus dans un kernel oops. Notre algorithme atteint 92% de précision comparé à 26 % pour l’approche traditionnelle utilisant le débogueur gdb. Nous avons intégré notre solution dans un outil nommé OOPSA qui peut ainsi alléger le fardeau pour les développeurs lors du débogage de kernel oops.
Soutenance : 18/12/2014
Membres du jury :
Laurent Réveillère, LaBRI, Bordeaux [rapporteur]
Nicolas Anquetil, Inria, Lille [rapporteur]
Pierre Sens, LIP6, Paris
Nicolas Palix, IMAG, Grenoble
David Lo, SMU, Singapore
Julia Lawall, LIP6, Paris
Gilles Muller, LIP6, Paris
Publications 2013-2014
-
2014
- L. Guo : “Boost the Reliability of the Linux Kernel — Debugging Kernel Oopses”, soutenance de thèse, soutenance 18/12/2014, direction de recherche Lawall, Julia, co-encadrement : Muller, Gilles (2014)
- L. Guo, J. Lawall, G. Muller : “Oops! Where Did That Code Snippet Come From?”, MSR 2014 Proceedings of the 11th Working Conference on Mining Software Repositories, Hyderabad, India, pp. 52-61, (ACM) (2014)
-
2013
- L. Guo, P. Senna Tschudin, K. Kono, G. Muller, J. Lawall : “Oops! What about a Million Kernel Oopses?”, 27 pages (2013)
- L. Guo : “Pinpoint the Offending Code in a Kernel Oops”, ComPAS, Grenoble, France (2013)