You can manage bookmarks using lists, please log in to your user account for this.
Media type:
E-Article
Title:
Exceptional situations and program reliability
Contributor:
Weimer, Westley;
Necula, George C.
imprint:
Association for Computing Machinery (ACM), 2008
Published in:ACM Transactions on Programming Languages and Systems
Language:
English
DOI:
10.1145/1330017.1330019
ISSN:
0164-0925;
1558-4593
Origination:
Footnote:
Description:
<jats:p>It is difficult to write programs that behave correctly in the presence of run-time errors. Proper behavior in the face of exceptional situations is important to the reliability of long-running programs. Existing programming language features often provide poor support for executing clean-up code and for restoring invariants.</jats:p>
<jats:p>We present a data-flow analysis for finding a certain class of exception-handling defects: those related to a failure to release resources or to clean up properly along all paths. Many real-world programs violate such resource usage rules because of incorrect exception handling. Our flow-sensitive analysis keeps track of outstanding obligations along program paths and does a precise modeling of control flow in the presence of exceptions. Using it, we have found over 1,300 exception handling defects in over 5 million lines of Java code.</jats:p>
<jats:p>Based on those defects we propose a programming language feature, the compensation stack, that keeps track of obligations at run time and ensures that they are discharged. We present a type system for compensation stacks that tracks collections of obligations. Finally, we present case studies to demonstrate that this feature is natural, efficient, and can improve reliability.</jats:p>