Abstract
System software, especially operating systems, tends to be highly configurable. Like every complex piece of software, a considerable amount of bugs in the implementation has to be expected. In order to improve the general code quality, tools for static analysis provide means to check for source code defects without having to run actual test cases on real hardware. Still, for proper type checking a specific configuration is required so that all header include paths are available and all types are properly resolved.
In order to find as many bugs as possible, usually a "full configuration" is used for the check. However, mainly because of alternative blocks in form of #else-blocks, a single configuration is insufficient to achieve full coverage. In this paper, we present a metric for configuration coverage (CC) and explain the challenges for (properly) calculating it. Furthermore, we present an efficient approach for determining a sufficiently small set of configurations that achieve (nearly) full coverage and evaluate it on a recent Linux kernel version.
- Bessey, A., Block, K., Chelf, B., Chou, A., Fulton, B., Hallem, S., Henri-Gros, C., Kamsky, A., McPeak, S., and Engler, D. A few billion lines of code later: using static analysis to find bugs in the real world. CACM 53 (February 2010), pp. 66--75. Google ScholarDigital Library
- Engler, D., Chen, D. Y., Hallem, S., Chou, A., and Chelf, B. Bugs as deviant behavior: a general approach to inferring errors in systems code. In 18th ACM Symp. on OS Principles (SOSP'01), ACM, pp. 57--72. Google ScholarDigital Library
- Kästner, C., Giarrusso, P. G., Rendel, T., Erdweg, S., Ostermann, K., and Berger, T. Variability-aware parsing in the presence of lexical macros and conditional compilation. In 26th ACM Conf. on OOP, Systems, Languages, and Applications (OOPSLA '11), ACM. Google ScholarDigital Library
- Kremenek, T., Twohey, P., Back, G., Ng, A., and Engler, D. From uncertainty to belief: inferring the specification within. In 7th Symp. on OS Design and Implementation (OSDI '06), USENIX, pp. 161--176. Google ScholarDigital Library
- Liebig, J., Apel, S., Lengauer, C., Kästner, C., and Schulze, M. An analysis of the variability in forty preprocessor-based software product lines. In 32nd Int. Conf. on Software Engineering (ICSE '10), ACM. Google ScholarDigital Library
- Oster, S., Markert, F., and Ritter, P. Automated incremental pairwise testing of software product lines. In 14th Software Product Line Conf. (SPLC '10) (2010), vol. 6287 of LNCS, Springer, pp. 196--210. Google ScholarDigital Library
- Palix, N., Thomas, G., Saha, S., Calvés, C., Lawall, J. L., and Muller, G. Faults in Linux: Ten years later. In 16th Int. Conf. on Arch. Support for Programming Languages and Operating Systems (ASPLOS '11) (2011), ACM, pp. 305--318. Google ScholarDigital Library
- Spencer, H., and Collyer, G. #ifdef considered harmful, or portability experience with C News. In 1992 USENIX ATC, USENIX.Google Scholar
- Spinellis, D. A tale of four kernels. In 30th Int. Conf. on Software Engineering (ICSE '08), W. Schafer, M. B. Dwyer, and V. Gruhn, Eds., ACM, pp. 381--390. Google ScholarDigital Library
- Tan, L., Yuan, D., Krishna, G., and Zhou, Y. /*icomment: Bugs or bad comments?*/. In 21st ACM Symp. on OS Principles (SOSP '07), ACM, pp. 145--158. Google ScholarDigital Library
- Tartler, R., Lohmann, D., Sincero, J., and Schröder-Preikschat, W. Feature consistency in compile-timeconfigurable system software: Facing the Linux 10,000 feature problem. In ACM SIGOPS/EuroSys Eur. Conf. on Computer Systems 2011 (EuroSys '11) (Apr. 2011), ACM, pp. 47--60. Google ScholarDigital Library
- Urban, M., Lohmann, D., and Spinczyk, O. The aspect-oriented design of the puma c/c++ parser framework. In 9th Int. Conf. on Aspect-Oriented Software Development (AOSD '10), ACM, pp. 217--221. Google ScholarDigital Library
- Zengler, C., and Küchlin, W. Encoding the Linux kernel configuration in propositional logic. In Proceedings of the 19th European Conference on Artificial Intelligence (ECAI 2010) Workshop on Configuration 2010 (2010), L. Hotz and A. Haselböck, Eds., pp. 51--56.Google Scholar
Index Terms
- Configuration coverage in the analysis of large-scale system software
Recommendations
Configuration coverage in the analysis of large-scale system software
PLOS '11: Proceedings of the 6th Workshop on Programming Languages and Operating SystemsSystem software, especially operating systems, tends to be highly configurable. Like every complex piece of software, a considerable amount of bugs in the implementation has to be expected. In order to improve the general code quality, tools for static ...
Revealing and repairing configuration inconsistencies in large-scale system software
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 ...
Large scale Linux configuration with LCFG
ALS'00: Proceedings of the 4th annual Linux Showcase & Conference - Volume 4This paper describes the automatic installation and configuration system currently being used to manage several hundred Linux machines in the Division of Informatics at Edinburgh University. This is a development of the LCFG system which has been used ...
Comments