skip to main content
research-article

Configuration coverage in the analysis of large-scale system software

Authors Info & Claims
Published:11 January 2012Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. Spencer, H., and Collyer, G. #ifdef considered harmful, or portability experience with C News. In 1992 USENIX ATC, USENIX.Google ScholarGoogle Scholar
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle Scholar

Index Terms

  1. Configuration coverage in the analysis of large-scale system software

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGOPS Operating Systems Review
            ACM SIGOPS Operating Systems Review  Volume 45, Issue 3
            December 2011
            94 pages
            ISSN:0163-5980
            DOI:10.1145/2094091
            Issue’s Table of Contents

            Copyright © 2012 Authors

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 11 January 2012

            Check for updates

            Qualifiers

            • research-article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader