Note the new location for the seminar.

Thursday, February 19th 2004.
Room GATES 104

 Tools for Problem Determination and Program Understanding for Framework-Intensive Applications


Darrell Reimer, Nick Mitchell

IBM Research

Team: Bowen Alpern, Vas Bala, Herb Derby, Nick Mitchell, Todd Mummert, Darrell Reimer, Edith Schonberg, Gary Sevitsky, Kavitha Srinivas, Harini Srinivasan

About the talk:
Over the past several years, our group has been involved directly with problems in large IBM customer applications. Increasingly, these applications are primarily composed of a collection of heterogeneous, reuseable frameworks. We call this class of applications "framework-intensive". We'd like to share with you the customer-driven research we've been involved in, and in particular, to share the excitement we have in developing tools that meet the particularly stringent requirements of these applications:  the tools must be useable in the field, constraints on time and space on the analysis is extremely tight, the perturbation of the data collection on the running application must be minimal, and the tools must handle the high degree complexity we're seeing in these applications.
We'll show two examples of tools that are driven by our experience debugging problems in these applications. One is called Saber, a tool that analyzes code for common errors and violations of best practices. An Eclipse plugin, Saber combines a static analysis deep enough to uncover semantic errors with a rules engine that detects those errors. For example, customers have used Saber to detect race conditions, improperly managed resources, and a variety of other nasty problems that can cause outages in deployments of these kind of applications. The second is Leakbot, a tool that analyzes, and then tracks, the evolution of object reference graphs within running programs. One very common bug that shows up in these systems that Leakbot addresses is Java memory leaks. Both of these tools will be integrated into IBM products within the next year, and both scale to very large applications. Leakbot, for example, can analyze graphs with 50 million objects, and can track the actual evolution of large reference graphs with only 1-2% slowdown.