Improving the Quality of Error-Handling Code in Systems Software using Function-Local Information - INRIA - Institut National de Recherche en Informatique et en Automatique Accéder directement au contenu
Thèse Année : 2013

Improving the Quality of Error-Handling Code in Systems Software using Function-Local Information

Amélioration de la qualité des codes de gestion d'erreur dans les logiciels système en utilisant des informations locales aux fonctions

Suman Saha
  • Fonction : Auteur
  • PersonId : 951672

Résumé

In C, a typical strategy for implementing error handling code is to follow each operation that may encounter an error by a conditional that checks for an error result and, if one is found, performs the appropriate cleanup operations before returning from the function. This basic strategy, however, is itself error-prone, as it is easy to overlook some cleanup operations that are required, and to forget to update some existing error handling code when the function is extended with new operations that need to be undone in an error case. Furthermore, there may be substantial code duplication, as the same error handling code may be needed at many places within a function definition. One style of programming, goto-based strategy, that can somewhat alleviate these difficulties. To improve the structure of error handling code in the system software, we define an algorithm to transform error handling code implemented according to the basic strategy so that it follows the goto-based strategy. Even when error handling code is structured, the management of the releasing of allocated resources remains a continual problem in ensuring the robustness of systems code. In this thesis, we propose a microscopic resource-release omission fault finding algorithm, based on a mostly intraprocedural, flow and path-sensitive analysis, that targets and exploits the properties of error-handling code. Our algorithm is resistant to false positives in the set of resource acquisition and release operations, resulting in a low rate of false positives in the fault reports, and is highly scalable.
En C, une stratégie classique pour implémenter les codes de gestion d'erreur est de faire suivre chaque opération qui peut générer une erreur d'une structure conditionnelle qui teste si l'opération a renvoyé une erreur. Ce stratégie basique, cependant, est sujette à erreurs, et il est courant d'oublier des opérations de nettoyage requises, ainsi que d'oublier de mettre à jour des codes de gestion d'erreur existants lorsque la fonction est étendue avec de nouvelles opérations. De plus, une partie importante du code doit souvent être dupliquée. Un style de programmation, stratégie goto , qui peut réduire en partie certaines de ces difficultés. Pour améliorer la structure des codes de gestion d'erreur dans les logiciels système, nous définissions un algorithme qui permet de transformer les codes de gestion d'erreur implémentés suivant la stratégie basique en codes de gestion d'erreur qui utilisent la stratégie goto. Même lorsque les codes de gestion d'erreurs sont structurés, la gestion et la libération des ressources allouées restent un problème lorsqu'il s'agit d'assurer la robustesse du code système. Dans cette thèse, nous proposons un algorithme microscopique de détection d'omission de libération de ressource, basé sur une analyse principalement intra-procédurale, qui prend en compte les flux et les chemins du code et qui cible et exploite les propriétés des codes de gestion d'erreur. Notre algorithme est résistant aux faux positifs dans l'ensemble des acquisitions de ressources et des opérations de libération, ce qui produit un faible taux de faux positifs dans les rapports renvoyés par l'outil tout en passant à l'échelle.
Fichier principal
Vignette du fichier
Thesis.pdf (1.35 Mo) Télécharger le fichier
presentation.pdf (1.47 Mo) Télécharger le fichier
Format : Autre
Loading...

Dates et versions

tel-00937807 , version 1 (28-01-2014)

Identifiants

  • HAL Id : tel-00937807 , version 1

Citer

Suman Saha. Improving the Quality of Error-Handling Code in Systems Software using Function-Local Information. Programming Languages [cs.PL]. Université Pierre et Marie Curie - Paris VI, 2013. English. ⟨NNT : ⟩. ⟨tel-00937807⟩
336 Consultations
2898 Téléchargements

Partager

Gmail Facebook X LinkedIn More