Using linux device drivers for static verification tools benchmarking

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.

[1]  Thomas A. Henzinger,et al.  The software model checker Blast , 2007, International Journal on Software Tools for Technology Transfer.

[2]  Alexandre Petrenko,et al.  Establishing Linux Driver Verification Process , 2009, Ershov Memorial Conference.

[3]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[4]  Vladimir Nesov Automatically Finding Bugs in Open Source Programs , 2009, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[5]  Isil Dillig,et al.  Sound, complete and scalable path-sensitive analysis , 2008, PLDI '08.

[6]  Wolfgang Küchlin,et al.  Automatic data environment construction for static device drivers analysis , 2006, SAVCBS '06.

[7]  Vadim Mutilin,et al.  Static Verification “Under The Hood”: Implementation Details and Improvements of BLAST , 2011 .

[8]  David Evans,et al.  Improving Security Using Extensible Lightweight Static Analysis , 2002, IEEE Softw..

[9]  Andreas Podelski,et al.  ARMC: The Logical Choice for Software Model Checking with Abstraction Refinement , 2007, PADL.

[10]  Robert J. Simmons,et al.  Proofs from Tests , 2008, IEEE Transactions on Software Engineering.

[11]  Sriram K. Rajamani,et al.  SLIC: A Specification Language for Interface Checking (of C) , 2002 .

[12]  Thomas A. Henzinger,et al.  The software model checker B last : Applications to software engineering , 2007 .

[13]  Thomas A. Henzinger,et al.  Configurable Software Verification: Concretizing the Convergence of Model Checking and Program Analysis , 2007, CAV.

[14]  Mark A. Hillebrand,et al.  Invariants, Modularity, and Rights , 2009, Ershov Memorial Conference.

[15]  Vladimir A. Zakharov,et al.  How to Cook an Automated System for Linux Driver Verification , 2008 .

[16]  Evgeny Novikov,et al.  Towards an Open Framework for C Verification Tools Benchmarking , 2011, Ershov Memorial Conference.

[17]  Thomas Ball,et al.  SLAM2: Static driver verification with under 4% false alarms , 2010, Formal Methods in Computer Aided Design.

[18]  Thomas Ball,et al.  The Static Driver Verifier Research Platform , 2010, CAV.

[19]  Junfeng Yang,et al.  An empirical study of operating systems errors , 2001, SOSP.

[20]  Michael J. Donahoo,et al.  Under the Hood , 2009 .

[21]  Wolfgang Küchlin,et al.  Integrated Static Analysis for Linux Device Driver Verification , 2007, IFM.

[22]  Brian N. Bershad,et al.  Improving the reliability of commodity operating systems , 2005, TOCS.

[23]  Daniel Kroening,et al.  SATABS: SAT-Based Predicate Abstraction for ANSI-C , 2005, TACAS.

[24]  Edmund M. Clarke,et al.  Counterexample-Guided Abstraction Refinement , 2000, CAV.

[25]  Dirk Beyer,et al.  CPAchecker: A Tool for Configurable Software Verification , 2009, CAV.

[26]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[27]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[28]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.

[29]  Daniel Kroening,et al.  Model checking concurrent linux device drivers , 2007, ASE.

[30]  Murali Sitaraman,et al.  Incremental Benchmarks for Software Verification Tools and Techniques , 2008, VSTTE.