DocumentCode
1637345
Title
Poster: Static Detection of Configuration-Dependent Bugs in Configurable Software
Author
Al-Kofahi, Jafar ; Lisong Guo ; Nguyen, Hung Viet ; Nguyen, Hoan Anh ; Nguyen, Tien N.
Author_Institution
Electr. & Comput. Eng. Dept., Iowa State Univ., Ames, IA, USA
Volume
2
fYear
2015
Firstpage
795
Lastpage
796
Abstract
Configurable software systems enable developers to configure at compile time a single variant of the system to tailor it towards specific environments and features. Although traditional static analysis tools can assist developers in software development and maintenance, they can only run on a concrete configuration of a configurable software system. Thus, it is necessary to derive many configurations so that the configuration-specific parts of the source code can be checked. To avoid this tedious and error-prone process, we propose an approach to automatically derive a set of configurations that cover as many combinations of configuration-specific blocks of code or source files as possible. We represent a C program with CPP directives (e.g., #ifdef) with a CPP control-flow graph (CPP-CFG) in which CPP expressions are condition nodes and #ifdef blocks are statement nodes. We then explore possible paths on CPP-CFG with dynamic symbolic execution and depth-first search algorithms, and correspondingly, producing possible combinations of concrete blocks of C code, on which an existing static analysis tool can run. Our preliminary evaluation on a benchmark of configuration-dependent bugs on Linux shows that our approach can detect more bugs than a state-of-the-art tool.
Keywords
graph theory; program diagnostics; software maintenance; tree searching; C program; CPP control-flow graph; CPP directives; CPP-CFG; Linux; configurable software systems; configuration-dependent bugs; configuration-specific blocks; depth-first search algorithms; dynamic symbolic execution; software development; software maintenance; static analysis tools; static detection; Computer bugs; Concrete; Heuristic algorithms; Kernel; Linux; Software systems; configurable software; configuration-dependent bugs; dynamic symbolic execution;
fLanguage
English
Publisher
ieee
Conference_Titel
Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on
Conference_Location
Florence
Type
conf
DOI
10.1109/ICSE.2015.252
Filename
7203073
Link To Document