Abstract
The Linux Driver Verification system is designed for static analysis of the source code of Linux kernel space device drivers. In this paper, we describe the architecture of the verification system, including the integration of third-party tools for static verification of C programs. We consider characteristics of the Linux drivers source code that are important from the viewpoint of verification algorithms and give examples of comparative analysis of different verification tools, as well as different versions and configurations of a given tool.
Similar content being viewed by others
References
Engler, D., Chelf, A., and Chou, A., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, Proc. of the 4th Conf. on Symposium on Operating System Design and Implementation, 2000, vol. 1, pp. 1–16. http://dl.acm.org/cita-tion.cfm?id=1251229.1251230
Syromyatnikov, S., Declarative Interface of Defect Search in Syntactic Trees: The KAST Language, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2011, vol. 20, pp. 51–68.
Nesov, V. and Malikov, O., Using Linear Dependence Data for Detection of Vulnerabilities in the Source Codes of Programs, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2006, vol. 9, pp. 51–56.
Nesov, V. and Gaisaryan, S., Automatic Detection of Defects in the Source Codes of Programs, Proc. of the 17th All-Russian Scientific and Technical Conf.: Methods and Technical Means for Information Safety, 2008, p. 107.
Nesov V., Automatically Finding Bugs in Open Source Programs, Proc. of the Third Int. Workshop on Foundations and Techniques for Open Source Software Certification, 2009, vol. 20, pp. 19–29.
Dillig, I., Dillig, T., and Aiken, A., Sound, Complete and Scalable Path-Sensitive Analysis, SIGPLAN Not., 2008, vol. 43, pp. 270–280. http://doi.acm.org/10.1145/1379022.1375615.
Hovemeyer, D. and Pugh, W., Finding Bugs is Easy, SIGPLAN Not., 2004, vol. 39, pp. 92–106. http://doi.acm.org/10.1145/1052883.1052895.
Evans, D. and Larochelle, D., Improving Security Using Extensible Lightweight Static Analysis, IEEE Software, 2002, vol. 19, pp. 42–51. http://por-tal.acm.org/citation.cfm?id=624647.626359.
Beyer, D., Henzinger, T.A., Jhala, R., and Majumdar, R., The Software Model Checker Blast: Applications to Software Engineering, Int. J. Software Tools Technol. Transfer, 2007, vol. 9, no. 5, pp. 505–525.
Shved, P., Mutilin, V., and Mandrykin, M., Static Verification “Under the Hood”: Implementation Details and Improvements of BLAST, Proc. of SYRCoSE, 2011, vol. 1, pp. 54–60.
Beyer, D. and Keremoglu, M.E., CPAchecker: A Tool for Configurable Software Verification, Proc. of the 23rd Int. Conf. on Computer-Aided Verification (CAV-11), Springer: Berlin-Heidelberg, 2011, pp. 184–190. http://dl.acm.org/citation.cfm?id=2032305.2032321.
Clarke, Å., Kroening, D., and Lerda, F., A Tool for Checking ANSI-C Programs, Proc. of Tools and Algorithms for the Construction and Analysis of Systems (TACAS-2004), Jensen, K. and Podelski A., Eds., Springer, 2004; Lect. Notes Comput. Sci., 2004, vol. 2988, pp. 168–176.
Podelski, A. and Rybalchenko, A., ARMC: The logical Choice for Software Model Checking with Abstraction Refinement, Practical Aspects of Declarative Languages, Hanus, M., Ed., Berlin: Springer, 2007; Lect. Notes Comput. Sci., vol. 4354, pp. 245–259.
Ball, T., Bounimova, E., Levin V., et al., The Static Driver Verifier Research Platform, Computer Aided Verification (CAV-10), 2010, pp. 119–122.
Ball, T., Bounimova, E., Kumar, B., and Levin V., SLAM2: Static Driver Verification with Under 4% False Alarms, Formal Methods in Computer Aided Design, 2010.
Khoroshilov, A. and Mutilin, V., Formal Methods for Open Source Components Certification, Proc. of the 2nd Int. Workshop on Foundations and Techniques for Open Source Software Certification (OpenCert-2008), 2008, pp. 52–63.
Khoroshilov, A., Mutilin, V., Shcherbina, V., et al., How to Cook an Automated System for Linux Driver Verification, Proc. of the 2nd Spring Young Researchers’ Colloquium on Software Engineering (SYRCoSE-2008), 2008, vol. 2, pp. 11–14.
Khoroshilov, A., Mutilin, V., Petrenko, A., and Zakharov V., Establishing Linux Driver Verification Process in Perspectives of Systems Informatics, Pnueli, A., Virbitskaite, I., and Voronkov, A., Eds., Berlin: Springer, 2010; Lect. Notes Comput. Sci., vol. 5947, pp. 165–176.
Khoroshilov, A., Mutilin, V., Novikov, E., et al., Towards an Open Framework for Ñ Verification Tools Benchmarking, Proc. of PSI, 2011, pp. 82–91.
Mutilin, V., Novikov, E., Strakh, A., et al., The Linux Driver Verification Architecture, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2011, vol. 20, pp. 163–187.
Chou, A., Yang, J., Chelf B., et al., An Empirical Study of Operating Systems Errors, Proc. of the Eighteenth ACM Symp. on Operating Systems Principles (SOSP-01), New York: ACM, 2001, pp. 73–88.
Swift, M.M., Bershad, B.N., and Levy, H.M., Improving the Reliability of Commodity Operating Systems Proc. of the Nineteenth ACM Symp. on Operating Systems Principles (SOSP-03), New York: ACM, 2003, pp. 207–222.
Ivannikov, V.P. and Petrenko, A., Linux Operating System Verification Problems in the Context of Its Use in the State Sector, Tr. Inst. Sistemnogo Programmirovaniya RAN, 2006, vol. 10, pp. 9–14.
Kroah-Hartman, G., Corbet, J., and McPherson, A., Linux Kernel Development: How Fast It Is Going, Who Is Doing It, What They Are Doing, and Who Is Sponsoring It. http://www.linuxfoundation.org/docs/lf-linux-kernel-development-2010.pdf (2010).
Ball T. and Rajamani, S.K., SLIC: A Specification Language for Interface Checking, Tech. Rep., Microsoft Research, 2001. http://research.microsoft.com/apps/pubs/default.aspx?id=69906.
Beckman, N.E., Nori, A.V., Rajamani, S.K., and Simmons, R.J., Proofs from Tests, Proc. of the 2008 Int. Symp. on Software Testing and Analysis (ISSTA-08), New York: ACM, 2008, pp. 3–14. http://doi.acm.org/ 10.1145/1390630.1390634.
Witkowski, T., Blanc, N., Kroening, D., Weissenbacher, G., Model Checking Concurrent Linux Device Drivers, Proc. of the Twenty-Second IEEE/ACM Int. Conf. on Automated Software Engineering, New York: ACM, 2007, pp. 501–504.
Post, H. and Küchlin, W., Integrated Static Analysis for Linux Device Driver Verification, Proc. of the 6th Int. Conf. on Integrated Formal Methods (IFM-07), Berlin: Springer, 2007, pp. 518–537. http://portal.acm.org/citation.cfm?id=1770498.1770525.
Clarke, E., Kroening, D., Sharygina, N., and Yorav, K., SATABS: SAT-Based Predicate Abstraction for ANSIC, Proc. of the Int. Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS-2005), Springer, 2005; Lect. Notes Comput. Sci., 2005, vol. 3440, pp. 570–574.
Post, H. and Küchlin, W., Automatic Data Environment Construction for Static Device Drivers Analysis, Proc. of the 2006 Conf. on Specification and Verification of Component-Based Systems (SAVCBS-06), New York: ACM, 2006, pp. 89–92. http://doi.acm.org/10.1145/1181195.1181215.
Necula, G.C., McPeak, S., Rahul, S.P., and Weimer, W., CIL: Intermediate Language and Tools for Analysis and Transformation of Ñ Programs, Proc. of the 11th Int. Conf. on Compiler Construction (CC-02), London: Springer, 2002, pp. 213–228. http://por-tal.acm.org/citation.cfm?id=647478.727796.
Novikov, E., Simplified Analysis of Error Traces of the Code of Static Analysis Tools, Proc. of the Second Scientific and Practical Conf. “Actual Problems of System and Program Engineering (APSPE-2011), May 25, 2011, pp. 215–221.
Weide, B.W., Sitaraman, M., Harton, H.K., et al., Incremental Benchmarks for Software Verification Tools and Techniques, Proc. of the 2nd Int. Conf. on Verified Software: Theories, Tools, Experiments (VSTTE-08), Springer: Berlin/Heidelberg, 2008, pp. 84–98. http://dx.doi.org/10.1007/978-3-540-87873-5_10.
Clarke, E., Grumberg, O., Jha, S., et al., Counterexample-Guided Abstraction Refinement, Proc. CAV; Lect. Notes Comput. Sci., 2000, vol. 1855, pp. 154–169.
Beyer, D., Henzinger, ò.A., and The’oduloz, G., Configurable Software Verification: Concretizing the Convergence of Model Checking and Program Analysis, Proc. of CAV, Springer: Berlin/Heidelberg, 2007, pp. 504–518. http://portal.acm.org/citation.cfm?id=1770351.1770419.
First International Competition on Software Verification (SV-COMP) Held at TACAS-2012. http://sv-comp.sosy-lab.org
Problems Found in Linux Kernel Drivers. http://linux-testing.org/results/ldv
Author information
Authors and Affiliations
Corresponding author
Additional information
Original Russian Text © M.U. Mandrykin, V.S. Mutilin, E.M. Novikov, A.V. Khoroshilov, P.E. Shved, 2012, published in Programmirovanie, 2012, Vol. 38, No. 5.
Rights and permissions
About this article
Cite this article
Mandrykin, M.U., Mutilin, V.S., Novikov, E.M. et al. Using linux device drivers for static verification tools benchmarking. Program Comput Soft 38, 245–256 (2012). https://doi.org/10.1134/S0361768812050039
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S0361768812050039