Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
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
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
Experience with transactions in QuickSilver
SOSP '91 Proceedings of the thirteenth ACM symposium on Operating systems principles
Precise interprocedural dataflow analysis via graph reachability
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
Memory management with explicit regions
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Efficient and precise modeling of exceptions for the analysis of Java programs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
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
Analysis and Testing of Programs with Exception Handling Constructs
IEEE Transactions on Software Engineering
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
Interprocedural exception analysis for Java
Proceedings of the 2001 ACM symposium on Applied computing
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Complexity of Points-To Analysis of Java in the Presence of Exceptions
IEEE Transactions on Software Engineering
Automatically validating temporal safety properties of interfaces
SPIN '01 Proceedings of the 8th international SPIN workshop on Model checking of software
CCured: type-safe retrofitting of legacy code
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
Java Virtual Machine Specification
Java Virtual Machine Specification
Introduction to Automata Theory, Languages and Computability
Introduction to Automata Theory, Languages and Computability
The Java Language Specification
The Java Language Specification
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 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
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Pinpoint: Problem Determination in Large, Dynamic Internet Services
DSN '02 Proceedings of the 2002 International Conference on Dependable Systems and Networks
Bug isolation via remote program sampling
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Automatic Failure-Path Inference: A Generic Introspection Technique for Internet Applications
WIAPP '03 Proceedings of the The Third IEEE Workshop on Internet Applications
Criteria for Testing Exception-Handling Constructs in Java Programs
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Static analysis to support the evolution of exception structure in object-oriented systems
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automated Support for Development, Maintenance, and Testing in the Presence of Implicit Control Flow
Proceedings of the 26th International Conference on Software Engineering
Testing of java web services for robustness
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
SABER: smart analysis based error reduction
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Low-overhead memory leak detection using adaptive statistical profiling
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Finding and preventing run-time error handling mistakes
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Robustness Testing of Java Server Applications
IEEE Transactions on Software Engineering
Discovering faults in idiom-based exception handling
Proceedings of the 28th international conference on Software engineering
Effective typestate verification in the presence of aliasing
Proceedings of the 2006 international symposium on Software testing and analysis
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
The transaction concept: virtues and limitations (invited paper)
VLDB '81 Proceedings of the seventh international conference on Very Large Data Bases - Volume 7
Exception Handling and Software Fault Tolerance
IEEE Transactions on Computers
The C# Programming Language
Practical exception specifications
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
Enforcing authorization policies using transactional memory introspection
Proceedings of the 15th ACM conference on Computer and communications security
Translation and optimization for a core calculus with exceptions
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
An implementation and semantics for transactional memory introspection in Haskell
Proceedings of the ACM SIGPLAN Fourth Workshop on Programming Languages and Analysis for Security
The road not taken: Estimating path execution frequency statically
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Finding bugs in exceptional situations of JNI programs
Proceedings of the 16th ACM conference on Computer and communications security
On the modularization and reuse of exception handling with aspects
Software—Practice & Experience
An extensible technique for high-precision testing of recovery code
USENIXATC'10 Proceedings of the 2010 USENIX conference on USENIX annual technical conference
An approach to improving the structure of error-handling code in the linux kernel
Proceedings of the 2011 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
Interprocedural exception analysis for C++
Proceedings of the 25th European conference on Object-oriented programming
Efficient Testing of Recovery Code Using Fault Injection
ACM Transactions on Computer Systems (TOCS)
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Exception handling for copyless messaging
Proceedings of the 14th symposium on Principles and practice of declarative programming
Hi-index | 0.00 |
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.