skip to main content
10.1145/1966445.1966451acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
research-article

Feature consistency in compile-time-configurable system software: facing the linux 10,000 feature problem

Published: 10 April 2011 Publication History

Abstract

Much system software can be configured at compile time to tailor it with respect to a broad range of supported hardware architectures and application domains. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly.
From the maintenance point of view, compile-time configurability imposes big challenges. The configuration model (the selectable features and their constraints as presented to the user) and the configurability that is actually implemented in the code have to be kept in sync, which, if performed manually, is a tedious and error-prone task. In the case of Linux, this has led to numerous defects in the source code, many of which are actual bugs.
We suggest an approach to automatically check for configurability-related implementation defects in large-scale configurable system software. The configurability is extracted from its various implementation sources and examined for inconsistencies, which manifest in seemingly conditional code that is in fact unconditional. We evaluate our approach with the latest version of Linux, for which our tool detects 1,776 configurability defects, which manifest as dead/superfluous source code and bugs. Our findings have led to numerous source-code improvements and bug fixes in Linux: 123 patches (49 merged) fix 364 defects, 147 of which have been confirmed by the corresponding Linux developers and 20 as fixing a new bug.

References

[1]
Batory 2004 Don Batory. Feature-oriented programming and the AHEAD tool suite. In Proceedings of the 26th International Conference on Software Engineering (ICSE '04), pages 702--703. IEEE Computer Society Press, 2004.
[2]
Baxter 2001 Ira D. Baxter and Michael Mehlich. Preprocessor conditional removal by simple partial evaluation. In Proceedings of the 8th Working Conference on Reverse Engineering (WCRE '01), page 281, Washington, DC, USA, 2001. IEEE Computer Society Press. ISBN 0-7695-1303-4.
[3]
Benavides 2005 D. Benavides, A. Ruiz-Cortés, and P. Trinidad. Automated reasoning on feature models. In Proceedings of the 17th International Conference on Advanced Information Systems Engineering (CAISE '05), volume 3520, pages 491--503, Heidelberg, Germany, 2005. Springer-Verlag.
[4]
Berger 2010 Thorsten Berger and Steven She. Formal semantics of the CDL language. Technical note, University of Leipzig, 2010.
[5]
Beuche 1999 Danilo Beuche, Abdelaziz Guerrouat, Holger Papajewski, Wolfgang Schröder-Preikschat, Olaf Spinczyk, and Ute Spinczyk. The PURE family of object-oriented operating systems for deeply embedded systems. In Proceedings of the 2nd IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC '99), pages 45--53, St Malo, France, May 1999.
[6]
Cadar 2008 Cristian Cadar, Daniel Dunbar, and Dawson Engler. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In 8th Symposium on Operating System Design and Implementation (OSDI '08), Berkeley, CA, USA, 2008. USENIX Association.
[7]
Campbell 1993 Roy Campbell, Nayeem Islam, Peter Madany, and David Raila. Designing and implementing Choices: An objectoriented system in C++. Communications of the ACM, 36(9), 1993.
[8]
Coady 2003 Yvonne Coady and Gregor Kiczales. Back to the future: A retroactive study of aspect evolution in operating system code. In Mehmet Ak¸sit, editor, Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD '03), pages 50--59, Boston, MA, USA, March 2003. ACM Press.
[9]
Czarnecki 2000 Krysztof Czarnecki and Ulrich W. Eisenecker. Generative Programming. Methods, Tools and Applications. Addison-Wesley, May 2000. ISBN 0-20-13097-77.
[10]
Czarnecki 2007 Krzysztof Czarnecki and Andrzej Wasowski. Feature diagrams and logics: There and back again. In Proceedings of the 11th Software Product Line Conference (SPLC '07), pages 23--34. IEEE Computer Society Press, Sept. 2007.
[11]
Engler 2001 Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf. Bugs as deviant behavior: a general approach to inferring errors in systems code. In Proceedings of the 18th ACM Symposium on Operating Systems Principles (SOSP '01), pages 57--72, New York, NY, USA, 2001. ACM Press.
[12]
Ernst 2000 Michael D. Ernst, Adam Czeisler, William G. Griswold, and David Notkin. Quickly detecting relevant program invariants. In Proceedings of the 22nd International Conference on Software Engineering (ICSE '00), pages 449--458, New York, NY, USA, 2000. ACM Press. ISBN 1-58113-206-9.
[13]
Fassino 2002 Jean-Philippe Fassino, Jean-Bernard Stefani, Julia Lawall, and Gilles Muller. THINK: A software framework for component-based operating system kernels. In Proceedings of the 2002 USENIX Annual Technical Conference, pages 73--86. USENIX Association, June 2002.
[14]
Guo 2009 Philip J. Guo and Dawson Engler. Linux kernel developer responses to static analysis bug reports. In Proceedings of the 2009 USENIX Annual Technical Conference, Berkeley, CA, USA, June 2009. USENIX Association. ISBN 978-1-931971-68-3.
[15]
Hu 2000 Ying Hu, Ettore Merlo, Michel Dagenais, and Bruno Lagüe. C/C++ conditional compilation analysis using symbolic execution. In Proceedings of the 16th IEEE International Conference on Software Maintainance (ICSM'00), page 196, Washington, DC, USA, 2000. IEEE Computer Society Press. ISBN 0-7695-0753-0.
[16]
Kremenek 2006 Ted Kremenek, Paul Twohey, Godmar Back, Andrew Ng, and Dawson Engler. From uncertainty to belief: inferring the specification within. In 7th Symposium on Operating System Design and Implementation (OSDI '06), pages 161--176, Berkeley, CA, USA, 2006. USENIX Association.
[17]
Li 2005 Zhenmin Li and Yuanyuan Zhou. PR-miner: automatically extracting implicit programming rules and detecting violations in large software code. In Proceedings of the 10th European Software Engineering Conference and the 13th ACM Symposium on the Foundations of Software Engineering (ESEC/FSE '00), pages 306--315, New York, NY, USA, 2005. ACM Press. ISBN 1-59593-014-0.
[18]
Liebig 2010 Jörg Liebig, Sven Apel, Christian Lengauer, Christian Kästner, and Michael Schulze. An analysis of the variability in forty preprocessor-based software product lines. In Proceedings of the 32nd International Conference on Software Engineering (ICSE '10), New York, NY, USA, 2010. ACM Press.
[19]
Lohmann 2009 Daniel Lohmann, Wanja Hofer, Wolfgang Schröder-Preikschat, Jochen Streicher, and Olaf Spinczyk. CiAO: An aspect-oriented operating-system family for resource-constrained embedded systems. In Proceedings of the 2009 USENIX Annual Technical Conference, pages 215--228, Berkeley, CA, USA, June 2009. USENIX Association. ISBN 978-1-931971-68-3.
[20]
Lohmann 2006 Daniel Lohmann, Fabian Scheler, Reinhard Tartler, Olaf Spinczyk, and Wolfgang Schröder-Preikschat. A quantitative analysis of aspects in the eCos kernel. In Proceedings of the ACM SIGOPS/EuroSys European Conference on Computer Systems 2006 (EuroSys '06), pages 191--204, New York, NY, USA, April 2006. ACM Press.
[21]
Massa 2002 Anthony Massa. Embedded Software Development with eCos. New Riders, 2002. ISBN 978-0130354730.
[22]
Padioleau 2008 Yoann Padioleau, Julia L. Lawall, Gilles Muller, and René Rydhof Hansen. Documenting and automating collateral evolutions in Linux device drivers. In Proceedings of the ACM SIGOPS/EuroSys European Conference on Computer Systems 2008 (EuroSys '08), Glasgow, Scotland, March 2008.
[23]
Palix 2010 Nicolas Palix, Julia Lawall, and Gilles Muller. Tracking code patterns over multiple software versions with Herodotos. In Proceedings of the 9th International Conference on Aspect-Oriented Software Development (AOSD '10), pages 169--180, New York, NY, USA, 2010. ACM Press. ISBN 978-1-60558-958-9.
[24]
Parnas 1979 David Lorge Parnas. Designing software for ease of extension and contraction. IEEE Transactions on Software Engineering, SE-5 (2): 128--138, 1979.
[25]
Pohl 2005 Klaus Pohl, Günter Böckle, and Frank J. van der Linden. Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag, 2005. ISBN 978-3540243724.
[26]
Reid 2000 Alastair Reid, Matthew Flatt, Leigh Stoller, Jay Lepreau, and Eric Eide. Knit: Component composition for systems software. In 4th Symposium on Operating System Design and Implementation (OSDI '00), pages 347--360, Berkeley, CA, USA, October 2000. USENIX Association.
[27]
Sincero 2010 Julio Sincero, Reinhard Tartler, Daniel Lohmann, and Wolfgang Schröder-Preikschat. Efficient extraction and analysis of preprocessor-based variability. In Proceedings of the 9th International Conference on Generative Programming and Component Engineering (GPCE '10), New York, NY, USA, 2010. ACM Press.
[28]
Spencer 1992 Henry Spencer and Gehoff Collyer. \#ifdef considered harmful, or portability experience with C News. In Proceedings of the 1992 USENIX Annual Technical Conference, Berkeley, CA, USA, June 1992. USENIX Association.
[29]
Spinellis 2008 Diomidis Spinellis. A tale of four kernels. In Wilhem Schäfer, Matthew B. Dwyer, and Volker Gruhn, editors, Proceedings of the 30th International Conference on Software Engineering (ICSE '08), pages 381--390, New York, NY, USA, May 2008. ACM Press. ISBN 987-1-60558-079-1.
[30]
Tan 2007 Lin Tan, Ding Yuan, Gopal Krishna, and Yuanyuan Zhou. /*icomment: Bugs or bad comments?*/. In Proceedings of the 21st ACM Symposium on Operating Systems Principles (SOSP '07), pages 145--158, New York, NY, USA, 2007. ACM Press. ISBN 978-1-59593-591-5.
[31]
Zengler 2010 Christoph Zengler and Wolfgang Küchlin. Encoding the Linux kernel configuration in propositional logic. In Lothar Hotz and Alois Haselböck, editors, Proceedings of the 19th European Conference on Artificial Intelligence (ECAI 2010) Workshop on Configuration 2010, pages 51--56, 2010.

Cited By

View all
  • (2025)Ferry: Toward Better Understanding of Input/Output Space for Data Wrangling ScriptsIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2024.345632831:1(1202-1212)Online publication date: Jan-2025
  • (2025)Syntax-preserving program slicing for C-based software product linesJournal of Systems and Software10.1016/j.jss.2024.112255219:COnline publication date: 1-Jan-2025
  • (2024)Comparing the intensity of variability changes in software product line evolutionProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3676549(220-220)Online publication date: 2-Sep-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
EuroSys '11: Proceedings of the sixth conference on Computer systems
April 2011
370 pages
ISBN:9781450306348
DOI:10.1145/1966445
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 10 April 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. configurability
  2. linux
  3. maintenance
  4. static analysis
  5. vamos

Qualifiers

  • Research-article

Conference

EuroSys '11
Sponsor:
EuroSys '11: Sixth EuroSys Conference 2011
April 10 - 13, 2011
Salzburg, Austria

Acceptance Rates

EuroSys '11 Paper Acceptance Rate 24 of 161 submissions, 15%;
Overall Acceptance Rate 241 of 1,308 submissions, 18%

Upcoming Conference

EuroSys '25
Twentieth European Conference on Computer Systems
March 30 - April 3, 2025
Rotterdam , Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)32
  • Downloads (Last 6 weeks)3
Reflects downloads up to 13 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Ferry: Toward Better Understanding of Input/Output Space for Data Wrangling ScriptsIEEE Transactions on Visualization and Computer Graphics10.1109/TVCG.2024.345632831:1(1202-1212)Online publication date: Jan-2025
  • (2025)Syntax-preserving program slicing for C-based software product linesJournal of Systems and Software10.1016/j.jss.2024.112255219:COnline publication date: 1-Jan-2025
  • (2024)Comparing the intensity of variability changes in software product line evolutionProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3676549(220-220)Online publication date: 2-Sep-2024
  • (2024)Should I Bother? Fast Patch Filtering for Statically-Configured Software VariantsProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3672585(12-23)Online publication date: 2-Sep-2024
  • (2024)Maximizing Patch Coverage for Testing of Highly-Configurable Software without Exploding Build TimesProceedings of the ACM on Software Engineering10.1145/36437461:FSE(427-449)Online publication date: 12-Jul-2024
  • (2024)Toward Cost-Effective Adaptive Random Testing: An Approximate Nearest Neighbor ApproachIEEE Transactions on Software Engineering10.1109/TSE.2024.337959250:5(1182-1214)Online publication date: May-2024
  • (2023)True Variability Shining Through Taxonomy MiningProceedings of the 27th ACM International Systems and Software Product Line Conference - Volume A10.1145/3579027.3608989(182-193)Online publication date: 28-Aug-2023
  • (2023)Hacksaw: Hardware-Centric Kernel Debloating via Device Inventory and Dependency AnalysisProceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security10.1145/3576915.3623208(1994-2008)Online publication date: 15-Nov-2023
  • (2023)Evolutionary Feature Dependencies: Analyzing Feature Co-Changes in C Systems2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00019(84-95)Online publication date: 2-Oct-2023
  • (2023)Analysis and Propagation of Feature Revisions in Preprocessor-based Software Product Lines2023 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER56733.2023.00035(284-295)Online publication date: Mar-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media