[OSQ] REMINDER Chess seminar: Westley Weimer, TODAY Tuesday, April 6, 4-5pm in 540 Cory Hall

From: Marco Sanvido (msanvido@eecs.berkeley.edu)
Date: 04/06/04


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