Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions

by Benoit Cornu, Lionel Seinturier and Martin Monperrus
Abstract: Context: In software, there are the error cases that are anticipated at specification and design time, those encountered at development and testing time, and those that were never anticipated before happening in production. Is it possible to learn from the anticipated errors during design to analyze and improve the resilience against the unanticipated ones in production? Objective: In this paper, we aim at analyzing and improving how software handles unanticipated exceptions. The first objective is to set up contracts about exception handling and a way to assess them automatically. The second one is to improve the resilience capabilities of software by transforming the source code. Method: We devise an algorithm, called short-circuit testing, which injects exceptions during test suite execution so as to simulate unanticipated errors. It is a kind of fault-injection techniques dedicated to exception-handling. This algorithm collects data that is used for verifying two formal contracts that capture two resilience properties w.r.t. exceptions: the source-independence and pure-resilience contracts. Then we propose a code modification technique, called "catch-stretching" which allows error-recovery code (of the form of catch blocks) to be more resilient. Results: Our evaluation is performed on 9 open-source software applications and consists in analyzing 241 catch blocks executed during test suite execution. Our results show that 101/214 of them (47%) expose resilience properties as defined by our exception contracts and that 84/214 of them (39%) can be transformed to be more resilient. Conclusion: Our work shows that it is possible to reason on software resilience by injecting exceptions during test suite execution. The collected information allows us to apply one source code transformation that improves the resilience against unanticipated exceptions. This works best if the test suite exercises the exceptional programming language constructs in many different scenarios.
 View PDF
Open-access (on archives-ouvertes.fr)
Publisher version (via DOI)
Citations: [citations]
Other publications of Martin Monperrus

Cite it:

Benoit Cornu, Lionel Seinturier and Martin Monperrus, "Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions", Information and Software Technology, Elsevier, vol. 57, pp. 66-76, 2015.
https://doi.org/10.1016/j.infsof.2014.08.004
Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions
https://inria.hal.science/hal-01062969/file/exception-analysis-resilience-ist.pdf
[Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions](https://inria.hal.science/hal-01062969/file/exception-analysis-resilience-ist.pdf) ([doi:10.1016/j.infsof.2014.08.004](https://doi.org/10.1016/j.infsof.2014.08.004))
\href{https://inria.hal.science/hal-01062969/file/exception-analysis-resilience-ist.pdf}{Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions} % \cite{cornu:hal-01062969}

Bibtex Entry:

@article{cornu:hal-01062969,
 title = {Exception Handling Analysis and Transformation Using Fault Injection: Study of Resilience Against Unanticipated Exceptions},
 author = {Cornu, Benoit and Seinturier, Lionel and Monperrus, Martin},
 url = {https://inria.hal.science/hal-01062969/file/exception-analysis-resilience-ist.pdf},
 journal = {Information and Software Technology},
 publisher = {{Elsevier}},
 volume = {57},
 pages = {66-76},
 year = {2015},
 doi = {10.1016/j.infsof.2014.08.004},
}
Powered by bibtexbrowser