{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,8,19]],"date-time":"2024-08-19T19:09:22Z","timestamp":1724094562489},"reference-count":79,"publisher":"Association for Computing Machinery (ACM)","issue":"2","funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCR-9875171CCR-0085949CCR-0081588CCR-0234689CCR-0326577CCR-00225610"],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2008,3]]},"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.<\/jats:p>\n 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>\n 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>","DOI":"10.1145\/1330017.1330019","type":"journal-article","created":{"date-parts":[[2008,3,19]],"date-time":"2008-03-19T12:58:50Z","timestamp":1205931530000},"page":"1-51","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":52,"title":["Exceptional situations and program reliability"],"prefix":"10.1145","volume":"30","author":[{"given":"Westley","family":"Weimer","sequence":"first","affiliation":[{"name":"University of California, Berkeley, CA"}]},{"given":"George C.","family":"Necula","sequence":"additional","affiliation":[{"name":"University of California, Berkeley, CA"}]}],"member":"320","published-online":{"date-parts":[[2008,3,14]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"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."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/6448"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/4434.865896"},{"key":"e_1_2_1_4_1","volume-title":"Tech. Rep. RJ9913","author":"Alonso G.","year":"1994"},{"key":"e_1_2_1_5_1","volume-title":"SPIN 2001, Workshop on Model Checking of Software. Lecture Notes in Computer Science","volume":"2057","author":"Ball T."},{"key":"e_1_2_1_6_1","volume-title":"SLIC: A specification language for interface checking (of C). Tech. Rep. MSR-TR-2001-21, Microsoft Research.","author":"Ball T.","year":"2001"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/604131.604153"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/58564.58565"},{"key":"e_1_2_1_9_1","volume-title":"USENIX Annual Technical Conference.","author":"Brown A."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134320"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/304065.304113"},{"key":"e_1_2_1_12_1","unstructured":"Campione M. Walrath K. and Huml A. 2000. The Java Tutorial. Addison-Wesley Reading MA. Campione M. Walrath K. and Huml A. 2000. The Java Tutorial. Addison-Wesley Reading MA."},{"key":"e_1_2_1_13_1","volume-title":"Proceedings of the IEEE Workshop on Internet Applications","author":"Candea G."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.798321"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/372202.372786"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.926173"},{"key":"e_1_2_1_18_1","volume-title":"Proceedings of the International Conference on Dependable Systems and Networks. IEEE Computer Society","author":"Chen M. Y."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/316158.316171"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1982.1676035"},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of ECDL. Lecture Notes in Computer Science","volume":"1513","author":"Dan A."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/543552.512538"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/93597.98730"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378811"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications. ACM","author":"Demsky B."},{"key":"e_1_2_1_27_1","series-title":"Lecture Notes in Computer Science","volume-title":"Advances in Exception Handling Techniques","author":"Dony C."},{"key":"e_1_2_1_28_1","volume-title":"Proceedings of the Symposium on Operating Systems Design and Implementation.","author":"Engler D."},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512532"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/1146238.1146254"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.51"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1007512.1007516"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/38713.38742"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277748"},{"key":"e_1_2_1_35_1","volume-title":"Telecommunications: Glossary of Telecommunication terms. Tech. Rep. Federal Standard 1037C, National Communications System Technology & Standards Division. Aug.","author":"General Services Administration","year":"1996"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/361227.361230"},{"key":"e_1_2_1_37_1","unstructured":"Gosling J. Joy B. and Steele G. L. 1996. The Java Language Specification. The Java Series. Addison-Wesley Reading MA. Gosling J. Joy B. and Steele G. L. 1996. The Java Language Specification. The Java Series. Addison-Wesley Reading MA."},{"key":"e_1_2_1_38_1","volume-title":"Proceedings of the International Conference on Very Large Data Bases","author":"Gray J.","year":"1981"},{"key":"e_1_2_1_39_1","volume-title":"ECOOP '00: Proceedings of the 14th European Conference on Object-Oriented Programming","author":"Gupta M."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.879818"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1024393.1024412"},{"key":"e_1_2_1_42_1","unstructured":"Hejlsberg A. Wilamuth S. and Golde P. 2003. The C# Programming Language. Addison-Wesley Reading MA. Hejlsberg A. Wilamuth S. and Golde P. 2003. The C# Programming Language. Addison-Wesley Reading MA."},{"key":"e_1_2_1_43_1","unstructured":"Hibernate. 2004. Object\/relational mapping and transparent object persistence for Java and SQL databases. In http:\/\/www.hibernate.org\/. Hibernate. 2004. Object\/relational mapping and transparent object persistence for Java and SQL databases. In http:\/\/www.hibernate.org\/."},{"key":"e_1_2_1_44_1","doi-asserted-by":"crossref","unstructured":"Hopcroft J. E. Motwani R. and Ullman J. D. 2000. Introduction to Automata Theory Languages and Computation (2nd Edition). Addison-Wesley. Hopcroft J. E. Motwani R. and Ullman J. D. 2000. Introduction to Automata Theory Languages and Computation (2nd Edition). Addison-Wesley.","DOI":"10.1145\/568438.568455"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028664.1028717"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/512927.512945"},{"key":"e_1_2_1_47_1","unstructured":"Korth H. F. Levy E. and Silberschatz A. 1990. A formal approach to recovery by compensating transactions. VLDB J. 95--106. Korth H. F. Levy E. and Silberschatz A. 1990. A formal approach to recovery by compensating transactions. VLDB J. 95--106."},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781148"},{"key":"e_1_2_1_49_1","unstructured":"Lindholm T. and Yellin F. 1997. The Java Virtual Machine Specification. The Java Series. Addison-Wesley Reading MA. Lindholm T. and Yellin F. 1997. The Java Virtual Machine Specification. The Java Series. Addison-Wesley Reading MA."},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/2166.357215"},{"key":"e_1_2_1_51_1","volume-title":"Proceedings of the Conference on Database Systems for Advanced Applications.","author":"Liu C."},{"key":"e_1_2_1_52_1","volume-title":"Proceedings of the USENIX Symposium on Operating Systems Design and Implementation.","author":"Lowell D. E."},{"key":"e_1_2_1_53_1","volume-title":"Tech. Rep. CSE-TR-410-99","author":"Lowell D. E.","year":"1998"},{"key":"e_1_2_1_54_1","volume-title":"Eds. Lecture Notes in Computer Science","volume":"4119","author":"Malayeri D."},{"key":"e_1_2_1_55_1","volume-title":"Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP). 85--103","author":"Miller R."},{"key":"e_1_2_1_56_1","volume-title":"Proceedings of the International Conference on Compiler Construction. 213--228","author":"Necula G. C."},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503286"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263715"},{"key":"e_1_2_1_59_1","unstructured":"O'Hanley J. 2005. Always close streams. In http:\/\/www.javapractices.com\/. O'Hanley J. 2005. Always close streams. In http:\/\/www.javapractices.com\/."},{"key":"e_1_2_1_60_1","volume-title":"Tech. Rep. A96654-01 (Release 2 (9.2))","author":"Perry E. H.","year":"2002"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1013886.1007545"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199462"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/941566.941569"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.5555\/647476.727763"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/265924.265927"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/121132.121171"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/238721.238779"},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/319151.319163"},{"key":"e_1_2_1_69_1","volume-title":"Proceedings of the International Conference on Software Maintenance (ICSM'99)","author":"Sinha S."},{"key":"e_1_2_1_70_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.877846"},{"key":"e_1_2_1_71_1","volume-title":"Proceedings of the 27th International Conference on Software Engineering (ICSE 2005)","author":"Sinha S."},{"key":"e_1_2_1_72_1","unstructured":"SourceForge.net. 2003. About SourceForge.net (document A1). http:\/\/sourceforge.net. Tech. rep. SourceForge.net. 2003. About SourceForge.net (document A1). http:\/\/sourceforge.net. Tech. rep."},{"key":"e_1_2_1_73_1","unstructured":"Stallman R. Pesch R. and Shebs S. 2002. Debugging with GDB. Free Software Foundation. Stallman R. Pesch R. and Shebs S. 2002. Debugging with GDB. Free Software Foundation."},{"key":"e_1_2_1_74_1","unstructured":"Stroustrup B. 1991. The C++ Programming Language (second edition). Addison-Wesley Reading MA. Stroustrup B. 1991. The C++ Programming Language (second edition). Addison-Wesley Reading MA."},{"key":"e_1_2_1_75_1","unstructured":"Sun Microsystems. 2001. Java pet store 1.1.2 blueprint application. http:\/\/java.sun.com\/blueprints\/code\/. Tech. rep. Sun Microsystems. 2001. Java pet store 1.1.2 blueprint application. http:\/\/java.sun.com\/blueprints\/code\/. Tech. rep."},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1996.2613"},{"key":"e_1_2_1_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/582128.582142"},{"key":"e_1_2_1_78_1","unstructured":"van der Wal S. 2002. Creating the C++ auto_ptr<> utility for Symbian OS. Tech. rep. http:\/\/www.symbian.com\/developer\/techlib\/. Aug. van der Wal S. 2002. Creating the C++ auto_ptr<> utility for Symbian OS. Tech. rep. http:\/\/www.symbian.com\/developer\/techlib\/. Aug."},{"key":"e_1_2_1_79_1","volume-title":"Proceedings of the Networking and Distributed System Security Symposium 2000","author":"Wagner D."},{"key":"e_1_2_1_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1029011"},{"key":"e_1_2_1_81_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-31980-1_30"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1330017.1330019","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T20:40:13Z","timestamp":1672260013000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1330017.1330019"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,3]]},"references-count":79,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2008,3]]}},"alternative-id":["10.1145\/1330017.1330019"],"URL":"https:\/\/doi.org\/10.1145\/1330017.1330019","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2008,3]]},"assertion":[{"value":"2005-12-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-08-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-03-14","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}