[PAST EVENT] Improving Program Reliability and Performance Using Program Analysis

February 18, 2014
8am - 9am
McGlothlin-Street Hall, Room 020
251 Jamestown Rd
Williamsburg, VA 23185Map this location
Cindy Rubio-Gonzalez, University of California, Berkeley


Automated program analysis can be used to great effects to systematically improve program reliability and efficiency. In my research, I focus on two causes of software failures and poor performance: incorrect error handling in large C programs, and inadequate floating-point precision in numerical programs.

In this talk, I will first present my work on developing and applying static program analysis to automatically find error-propagation bugs in large software systems. Bugs found in error handlers are among the most pervasive, dangerous, and difficult to detect in software systems. Incorrect error handling is a longstanding problem in many application domains, including systems software and user applications that use the return-code idiom. I will give an overview of an interprocedural context- and flow-sensitive analysis that tracks the propagation of error codes. This analysis is formalized using weighted pushdown systems (WPDS). I will describe how the analysis is used to find a variety of error-propagation bugs, such as dropped errors, misused error-valued pointers, and error-code mismatches between source code and error-reporting program documentation. I will present results for numerous real-world Linux file systems such as ext3 and ReiserFS, and Linux device drivers where the analysis have found hundreds of confirmed error-propagation bugs. As for user applications, I will present results for both the Mozilla Firefox web browser, and the SQLite library.

Second, I will present my work on developing and applying dynamic program analysis to improve the performance and reliability of numerical programs. Testing and debugging numerical programs pose unique challenges due to the use of floating-point arithmetic. In general, it is difficult to reason about floating-point programs, and programmers often resort to using the highest available floating-point precision, which can severely impact program performance. I will present Precimonious, a dynamic program analysis tool for assisting developers in tuning floating-point precision. To meet performance goals, Precimonious searches for the minimal precision type for floating-point program variables subject to accuracy constraints. Finally, I will briefly describe our most recent work on developing a general dynamic analysis framework for C/C++ programs geared towards analyzing floating-point exception handling in numerical programs.


Cindy Rubio-Gonzalez is currently a postdoctoral researcher at the University of California, Berkeley. She received her Ph.D. in Computer Science from the University of Wisconsin at Madison in 2012. Her work spans the areas of programming languages and software engineering, with a specific focus on program analysis. Her research aims to design and build tools to help developers write more reliable and efficient software by developing scalable, precise and informative program analyses. For her doctoral dissertation, she designed and applied static program analyses to find error-propagation bugs in large software systems. At UC Berkeley, Cindy is leading the development of dynamic program analysis tools to improve the performance and reliability of numerical programs. She is an AAUW International Doctoral Fellow, and currently serves as a Latina in Computing ambassador for the Anita Borg Institute. Cindy earned her M.S. in Computer Science from the University of Wisconsin-Milwaukee and her B.S. in Computer Systems Engineering from Saltillo Institute of Technology (Mexico). She also received a B.M. in Piano Performance from the Autonomous University of Coahuila (Mexico).