Date: Tue, 06 Apr 2004 09:36:37 -0700
From: Marco Sanvido <msanvido@eecs.berkeley.edu>
Subject: [OSQ] REMINDER Chess seminar: Westley Weimer, TODAY Tuesday, April 6, 4-5pm in 540 Cory Hall
Message-id: <4072DC95.4020400@eecs.berkeley.edu>
TODAY Tuesday, April 6, 4-5pm in 540 Cory Hall
Westley Weimer
UC Berkeley
Title: Finding and Preventing Run-Time Error Handling Mistakes
Abtract:
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.
This archive was generated by hypermail 2b30 : 04/06/04 PDT