• 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