Seminar Series - Finding Error-Handling Bugs in Systems Software Using Static Analysis
Speaker: Cindy Rubio Gonzalez, University of Wisconsin-Madison
Date: Tuesday, April 3, 2012
Location: 110 McBryde
Incorrect error handling is a longstanding problem in many large software systems. Despite accounting for a significant portion of the code, error handling is one of the least understood, documented, and tested parts of a system. Ideally, some action should be taken when a run-time error occurs (e.g., error notification, attempted recovery, etc.). Incorrect error handling in systems software is especially dangerous, as it can lead to serious problems such as system crashes, silent data loss and corruption. Most systems software today is written in C, which does not provide support for exception handling. Consequently the return-code idiom is commonly used in large C programs, including operating systems: run-time errors are represented as integer codes, and these error codes propagate through the program using conventional mechanisms such as variable assignments and function return values.
In this talk, I will present my work on developing and applying static program analyses to find error-handling bugs in systems software that uses the return-code idiom. I will give an overview of an interprocedural context- and flow-sensitive analysis that tracks the propagation of errors. This analysis is formalized using Weighted Pushdown Systems. I will describe how this analysis is used to find a variety of error-handling bugs, such as dropped unhandled 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, widely-used Linux file systems such as ext3 and ReiserFS, and Linux device drivers, where we have found hundreds of confirmed error-handling bugs.
Cindy Rubio Gonzalez is a Ph.D. candidate in Computer Science at the University of Wisconsin-Madison, where she works under the supervision of Prof. Ben Liblit. Her research area of interest is Programming Languages, with a specific focus on Program Analysis. For her doctoral dissertation, she is working on using static program analysis to find error-handling related bugs in systems software. She is an AAUW International Doctoral Fellow. She is currently serving as the president of UW-Madison's student chaper of ACM-W, and 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).