Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-Review

Autorschaft

  • Reinhard Tartler
  • Christian Dietrich
  • Julio Sincero
  • Wolfgang Schröder-Preikschat
  • Daniel Lohmann

Externe Organisationen

  • Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU Erlangen-Nürnberg)
Forschungs-netzwerk anzeigen

Details

OriginalspracheEnglisch
Titel des SammelwerksProceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference
Seiten421-432
Seitenumfang12
ISBN (elektronisch)9781931971102
PublikationsstatusVeröffentlicht - 1 Jan. 2019
Extern publiziertJa
Veranstaltung2014 USENIX Annual Technical Conference, USENIX ATC 2014 - Philadelphia, USA / Vereinigte Staaten
Dauer: 19 Juni 201420 Juni 2014

Abstract

System software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. The Linux v3.2 kernel, for instance, provides more than 12,000 configurable features, which control the configuration-dependent inclusion of 31,000 source files with 89,000 #ifdef blocks. Tools for static analyses can greatly assist with ensuring the quality of code-bases of this size. Unfortunately, static configurability limits the success of automated software testing and bug hunting. For proper type checking, the tools need to be invoked on a concrete configuration, so programmers have to manually derive many configurations to ensure that the configuration-conditional parts of their code are checked. This tedious and error-prone process leaves many easy to find bugs undetected. We propose an approach and tooling to systematically increase the configuration coverage (CC) in compile-time configurable system software. Our VAMPYR tool derives the required configurations and can be combined with existing static checkers to improve their results. With GCC as static checker, we thereby have found hundreds of issues in Linux v3.2, BUSYBOX, and L4/FIASCO, many of which went unnoticed for several years and have to be classified as serious bugs. Our resulting patches were accepted by the respective upstream developers.

ASJC Scopus Sachgebiete

Zitieren

Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue. / Tartler, Reinhard; Dietrich, Christian; Sincero, Julio et al.
Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference. 2019. S. 421-432.

Publikation: Beitrag in Buch/Bericht/Sammelwerk/KonferenzbandAufsatz in KonferenzbandForschungPeer-Review

Tartler, R, Dietrich, C, Sincero, J, Schröder-Preikschat, W & Lohmann, D 2019, Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue. in Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference. S. 421-432, 2014 USENIX Annual Technical Conference, USENIX ATC 2014, Philadelphia, USA / Vereinigte Staaten, 19 Juni 2014. <https://www.usenix.org/system/files/conference/atc14/atc14-paper-tartler.pdf>
Tartler, R., Dietrich, C., Sincero, J., Schröder-Preikschat, W., & Lohmann, D. (2019). Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue. In Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference (S. 421-432) https://www.usenix.org/system/files/conference/atc14/atc14-paper-tartler.pdf
Tartler R, Dietrich C, Sincero J, Schröder-Preikschat W, Lohmann D. Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue. in Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference. 2019. S. 421-432
Tartler, Reinhard ; Dietrich, Christian ; Sincero, Julio et al. / Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue. Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference. 2019. S. 421-432
Download
@inproceedings{591659b4b1084726b056a6996873ae66,
title = "Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue",
abstract = "System software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. The Linux v3.2 kernel, for instance, provides more than 12,000 configurable features, which control the configuration-dependent inclusion of 31,000 source files with 89,000 #ifdef blocks. Tools for static analyses can greatly assist with ensuring the quality of code-bases of this size. Unfortunately, static configurability limits the success of automated software testing and bug hunting. For proper type checking, the tools need to be invoked on a concrete configuration, so programmers have to manually derive many configurations to ensure that the configuration-conditional parts of their code are checked. This tedious and error-prone process leaves many easy to find bugs undetected. We propose an approach and tooling to systematically increase the configuration coverage (CC) in compile-time configurable system software. Our VAMPYR tool derives the required configurations and can be combined with existing static checkers to improve their results. With GCC as static checker, we thereby have found hundreds of issues in Linux v3.2, BUSYBOX, and L4/FIASCO, many of which went unnoticed for several years and have to be classified as serious bugs. Our resulting patches were accepted by the respective upstream developers.",
author = "Reinhard Tartler and Christian Dietrich and Julio Sincero and Wolfgang Schr{\"o}der-Preikschat and Daniel Lohmann",
note = "Funding information: ?This work was partly supprted by the German Research Council (DFG) under grant no. LO 1719/3-1 ?This work was partly supprted by the German Research Council (DFG) under grant no. LO 1719/3-1; 2014 USENIX Annual Technical Conference, USENIX ATC 2014 ; Conference date: 19-06-2014 Through 20-06-2014",
year = "2019",
month = jan,
day = "1",
language = "English",
pages = "421--432",
booktitle = "Proceedings of USENIX ATC {\textquoteright}14: 2014 USENIX Annual Technical Conference",

}

Download

TY - GEN

T1 - Static Analysis of Variability in System Software: The 90,000 #ifdefs Issue

AU - Tartler, Reinhard

AU - Dietrich, Christian

AU - Sincero, Julio

AU - Schröder-Preikschat, Wolfgang

AU - Lohmann, Daniel

N1 - Funding information: ?This work was partly supprted by the German Research Council (DFG) under grant no. LO 1719/3-1 ?This work was partly supprted by the German Research Council (DFG) under grant no. LO 1719/3-1

PY - 2019/1/1

Y1 - 2019/1/1

N2 - System software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. The Linux v3.2 kernel, for instance, provides more than 12,000 configurable features, which control the configuration-dependent inclusion of 31,000 source files with 89,000 #ifdef blocks. Tools for static analyses can greatly assist with ensuring the quality of code-bases of this size. Unfortunately, static configurability limits the success of automated software testing and bug hunting. For proper type checking, the tools need to be invoked on a concrete configuration, so programmers have to manually derive many configurations to ensure that the configuration-conditional parts of their code are checked. This tedious and error-prone process leaves many easy to find bugs undetected. We propose an approach and tooling to systematically increase the configuration coverage (CC) in compile-time configurable system software. Our VAMPYR tool derives the required configurations and can be combined with existing static checkers to improve their results. With GCC as static checker, we thereby have found hundreds of issues in Linux v3.2, BUSYBOX, and L4/FIASCO, many of which went unnoticed for several years and have to be classified as serious bugs. Our resulting patches were accepted by the respective upstream developers.

AB - System software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. The Linux v3.2 kernel, for instance, provides more than 12,000 configurable features, which control the configuration-dependent inclusion of 31,000 source files with 89,000 #ifdef blocks. Tools for static analyses can greatly assist with ensuring the quality of code-bases of this size. Unfortunately, static configurability limits the success of automated software testing and bug hunting. For proper type checking, the tools need to be invoked on a concrete configuration, so programmers have to manually derive many configurations to ensure that the configuration-conditional parts of their code are checked. This tedious and error-prone process leaves many easy to find bugs undetected. We propose an approach and tooling to systematically increase the configuration coverage (CC) in compile-time configurable system software. Our VAMPYR tool derives the required configurations and can be combined with existing static checkers to improve their results. With GCC as static checker, we thereby have found hundreds of issues in Linux v3.2, BUSYBOX, and L4/FIASCO, many of which went unnoticed for several years and have to be classified as serious bugs. Our resulting patches were accepted by the respective upstream developers.

UR - http://www.scopus.com/inward/record.url?scp=84908652115&partnerID=8YFLogxK

M3 - Conference contribution

SP - 421

EP - 432

BT - Proceedings of USENIX ATC ’14: 2014 USENIX Annual Technical Conference

T2 - 2014 USENIX Annual Technical Conference, USENIX ATC 2014

Y2 - 19 June 2014 through 20 June 2014

ER -