Finding Error-propagation Bugs in Large Software Systems Using Static Analysis

Finding Error-propagation Bugs in Large Software Systems Using Static Analysis
Author :
Publisher :
Total Pages : 0
Release :
ISBN-10 : OCLC:819588509
ISBN-13 :
Rating : 4/5 ( Downloads)

Book Synopsis Finding Error-propagation Bugs in Large Software Systems Using Static Analysis by :

Download or read book Finding Error-propagation Bugs in Large Software Systems Using Static Analysis written by and published by . This book was released on 2012 with total page 0 pages. Available in PDF, EPUB and Kindle. Book excerpt: 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 system software is especially dangerous, as it can lead to serious problems such as system crashes, silent data loss, and corruption. Most system 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 dissertation, I present my work on developing and applying static program analyses to find error-propagation bugs in system software that uses the return-code idiom. I 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 describe how this 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 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-propagation bugs. Additionally, I show that the error-propagation bugs described in this dissertation also occur in widely-used applications such as the Mozilla Firefox web browser, which is written in C++.


Finding Error-propagation Bugs in Large Software Systems Using Static Analysis Related Books