A modular verifiable exception handling mechanism
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
ACM Transactions on Computer Systems (TOCS)
Organizing long-running activities with triggers and transactions
SIGMOD '90 Proceedings of the 1990 ACM SIGMOD international conference on Management of data
Dealing with disaster: surviving misbehaved kernel extensions
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Region-based memory management
Information and Computation
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Memory management with explicit regions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Service Combinators for Web Computing
IEEE Transactions on Software Engineering
EROS: a fast capability system
Proceedings of the seventeenth ACM symposium on Operating systems principles
Guardians and Actions: Linguistic Support for Robust, Distributed Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Exception Handling in Workflow Management Systems
IEEE Transactions on Software Engineering - special section on current trends in exception handling—part II
Exception handling: issues and a proposed notation
Communications of the ACM
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
ESP: path-sensitive program verification in polynomial time
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Java Language Specification
The Java Language Specification
Tracking down software bugs using automatic anomaly detection
Proceedings of the 24th International Conference on Software Engineering
A case study in software adaptation
WOSS '02 Proceedings of the first workshop on Self-healing systems
Destructors, finalizers, and synchronization
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Enhancing the Fault Tolerance of Workflow Management Systems
IEEE Concurrency
A fully object-oriented exception handling system: rationale and smalltalk implementation
Advances in exception handling techniques
A Formal Approach to Recovery by Compensating Transactions
VLDB '90 Proceedings of the 16th International Conference on Very Large Data Bases
Improving Backward Recovery in Workflow Systems
DASFAA '01 Proceedings of the 7th International Conference on Database Systems for Advanced Applications
Pinpoint: Problem Determination in Large, Dynamic Internet Services
DSN '02 Proceedings of the 2002 International Conference on Dependable Systems and Networks
Automatic Failure-Path Inference: A Generic Introspection Technique for Internet Applications
WIAPP '03 Proceedings of the The Third IEEE Workshop on Internet Applications
Flexible Exception Handling in the OPERA Process Support System
ICDCS '98 Proceedings of the The 18th International Conference on Distributed Computing Systems
Regaining Control of Exception Handling
Regaining Control of Exception Handling
Program structures for exceptional condition handling.
Program structures for exceptional condition handling.
Modeling of sensor nets in Ptolemy II
Proceedings of the 3rd international symposium on Information processing in sensor networks
Undo for operators: building an undoable e-mail store
ATEC '03 Proceedings of the annual conference on USENIX Annual Technical Conference
Checking system rules using system-specific, programmer-written compiler extensions
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
Exploring failure transparency and the limits of generic recovery
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
Finding application errors and security flaws using PQL: a program query language
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Continuous code-quality assurance with SAFE
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Verification of coordinated exception handling
Proceedings of the 2006 ACM symposium on Applied computing
Dynamic state restoration using versioning exceptions
Higher-Order and Symbolic Computation
A framework for unified resource management in Java
PPPJ '06 Proceedings of the 4th international symposium on Principles and practice of programming in Java
Proceedings of the 5th international conference on Generative programming and component engineering
Exceptions and aspects: the devil is in the details
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Bouncer: securing software by blocking bad input
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
SafeDrive: safe and recoverable extensions using language-based techniques
OSDI '06 Proceedings of the 7th symposium on Operating systems design and implementation
Exceptional situations and program reliability
ACM Transactions on Programming Languages and Systems (TOPLAS)
The CLOSER: automating resource management in java
Proceedings of the 7th international symposium on Memory management
Automatic documentation inference for exceptions
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Exception handling refactorings: Directed by goals and driven by bug fixing
Journal of Systems and Software
Improving reliability of cooperative concurrent systems with exception flow analysis
Journal of Systems and Software
Mining API Error-Handling Specifications from Source Code
FASE '09 Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Mining exception-handling rules as sequence association rules
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Failboxes: Provably Safe Exception Handling
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Transactional pointcuts: designation reification and advice of interrelated join points
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Exhaustive testing of exception handlers with enforcer
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
Effective interprocedural resource leak detection
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Membrane: Operating system support for restartable file systems
ACM Transactions on Storage (TOS)
Membrane: operating system support for restartable file systems
FAST'10 Proceedings of the 8th USENIX conference on File and storage technologies
Dynamic aspects for runtime fault determination and recovery
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
An empirical study of object protocols in the wild
Proceedings of the 25th European conference on Object-oriented programming
APLAS'05 Proceedings of the Third Asian conference on Programming Languages and Systems
Exception-Handling bugs in java and a language extension to avoid them
Advanced Topics in Exception Handling Techniques
Mining temporal specifications for error detection
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Towards automatic exception safety verification
FM'06 Proceedings of the 14th international conference on Formal Methods
Enforcer – efficient failure injection
FM'06 Proceedings of the 14th international conference on Formal Methods
Reasoning about exception flow at the architectural level
Rigorous Development of Complex Fault-Tolerant Systems
On the expressive power of primitives for compensation handling
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Synthesizing API usage examples
Proceedings of the 34th International Conference on Software Engineering
Exception handling for copyless messaging
Proceedings of the 14th symposium on Principles and practice of declarative programming
Architecture-centric fault tolerance with exception handling
LADC'07 Proceedings of the Third Latin-American conference on Dependable Computing
Interprocedural path-sensitive resource leaks detection for C programs
Proceedings of the Fourth Asia-Pacific Symposium on Internetware
Detecting missing method calls as violations of the majority rule
ACM Transactions on Software Engineering and Methodology (TOSEM)
Inferring project-specific bug patterns for detecting sibling bugs
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
VeriDroid: automating Android application verification
Proceedings of the 2013 Middleware Doctoral Symposium
Hi-index | 0.00 |
It is difficult to write programs that behave correctly in the presence of run-time errors. Existing programming language features often provide poor support for executing clean-up code and for restoring invariants in such exceptional situations. We present a dataflow analysis for finding a certain class of error-handling mistakes: those that arise from a failure to release resources or to clean up properly along all paths. Many real-world programs violate such resource safety policies because of incorrect error 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 800 error handling mistakes almost 4 million lines of Java code. The analysis is unsound and produces false positives, but a few simple filtering rules suffice to remove them in practice. The remaining mistakes were manually verified. These mistakes cause sockets, files and database handles to be leaked along some paths. We present a characterization of the most common causes of those errors and discuss the limitations of exception handling, finalizers and destructors in addressing them. Based on those errors, we propose a programming language feature that keeps track of obligations at run time and ensures that they are discharged. Finally, we present case studies to demonstrate that this feature is natural, efficient, and can improve reliability; for example, retrofitting a 34kLOC program with it resulted in a 0.5% code size decrease, a surprising 17% speed increase (from correctly deallocating resources in the presence of exceptions), and more consistent behavior.