Affiliation:
1. University of California, Berkeley, CA
Abstract
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.
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.
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.
Funder
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Reference79 articles.
1. Abrial J.-R. Schuman S. A. and Meyer B. 1980. Specification language. In On the Construction of Programs. 343--410. Abrial J.-R. Schuman S. A. and Meyer B. 1980. Specification language. In On the Construction of Programs. 343--410.
2. Enhancing the fault tolerance of workflow management systems
Cited by
39 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Cut to the Chase: An Error-Oriented Approach to Detect Error-Handling Bugs;Proceedings of the ACM on Software Engineering;2024-07-12
2. Verifying Exception-Handling Code in Concurrent Libraries;2023 30th Asia-Pacific Software Engineering Conference (APSEC);2023-12-04
3. Effective handling of exceptional situations in robust software agents;Intelligenza Artificiale;2023-06-07
4. Don’t Forget the Exception! : Considering Robustness Changes to Identify Design Problems;2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR);2023-05
5. Detecting Exception Handling Bugs in C++ Programs;2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE);2023-05