Revealing and Repairing Configuration Inconsistencies in Large-Scale System Software - Tartler, Reinhard; Sincero, Julio; Dietrich, Christian; Schröder-Preikschat, Wolfgang; Lohmann, Daniel (International Journal on Software Tools for Technology Transfer, 2012)
System software typically offers a large amount of compile-time options and variability. A good example is the Linux kernel, which provides more than 10,000 configurable features, growing rapidly. This allows users to tailor it with respect to a broad range of supported hardware architectures and application domains. From the maintenance point of view, compile-time configurability poses 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. In order to ensure consistency between the variability expressed in the code and the configuration models, we propose an approach that extracts variability from both into propositional logic. This reveals inconsistencies between variability as expressed by the C Preprocessor (CPP) and an explicit variability model, which manifest themselves in seemingly conditional code that is in fact unconditional. We evaluate our approach with the Linux, for which our tool detects 1,766 configurability defects, which turned out 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 previously unknown bug. © 2012 Springer-Verlag.
UnivIS-Import:2015-04-14:Pub.2012.tech.IMMD.IMMD4.reveal
Keywords: Algorithms; Design; Experimentation; Management; Languages; Configurability; Maintenance; Linux; Static Analysis; VAMOS; i4vamos