Distributed Verification of Multi-threaded C++ Programs

Verification of multi-threaded C++ programs poses three major challenges: the large number of states, states with huge sizes, and time intensive expansions of states. This paper presents our efforts in addressing these issues by combining an efficient use of hard disk with the distribution of the state space on several computing nodes. The approach is applicable to clusters and multi-core machines with single or multiple hard disks. We exploit the concept of a signature of a state that allows the full state vector to stay on secondary memory. For a distributed exploration of the state space, we report the lessons learned from using different partitioning schemes, including Holzmann and Bosnacki's [G. Holzmann and D. Bosnacki. The design of a multi-core extension of the Spin Model Checker. IEEE Trans. on Software Engineering, 2007. To Appear] depth-slicing method, and their effects on blind and directed search algorithms. Empirical evaluation is done on our experimental C++ verification tool StEAM, which is capable of detecting errors such as segmentation faults, deadlocks, access conflicts, etc. The distributed algorithms are realized through MPI on a cluster of workstations.

[1]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[2]  Stefan Edelkamp,et al.  Large-Scale Directed Model Checking LTL , 2006, SPIN.

[3]  Benedikt Bollig,et al.  Local Parallel Model Checking for the Alternation-Free µ-Calculus , 2002, SPIN.

[4]  Benedikt Bollig,et al.  Parallel Model Checking for the Alternation Free µ-Calculus , 2001, TACAS.

[5]  Patrice Godefroid,et al.  Software Model Checking: The VeriSoft Approach , 2005, Formal Methods Syst. Des..

[6]  Lubos Brim,et al.  DiVinE - A Tool for Distributed Verification , 2006, CAV.

[7]  Stefan Edelkamp,et al.  Parallel External Directed Model Checking with Linear I/O , 2006, VMCAI.

[8]  Lubos Brim,et al.  I/O Efficient Accepting Cycle Detection , 2007, CAV.

[9]  Lubos Brim,et al.  Parallel breadth-first search LTL model-checking , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[10]  David L. Dill,et al.  Parallelizing the Murphi Verifier , 1997, CAV.

[11]  Ivana Cerná,et al.  Distributed Explicit Fair Cycle Detection (Set Based Approach) , 2003, SPIN.

[12]  Jaco van de Pol,et al.  A Database Approach to Distributed State-Space Generation , 2008, J. Log. Comput..

[13]  Stephan Merz,et al.  Model Checking , 2000 .

[14]  Assaf Schuster,et al.  A Work-Efficient Distributed Algorithm for Reachability Analysis , 2003, CAV.

[15]  Bernhard Steffen,et al.  Generating Data Flow Analysis Algorithms from Modal Specifications , 1993, Sci. Comput. Program..

[16]  Boudewijn R. Haverkort,et al.  On the efficient sequential and distributed generation of very large Markov chains from stochastic Petri nets , 1999, Proceedings 8th International Workshop on Petri Nets and Performance Models (Cat. No.PR00331).

[17]  Thierry Jéron,et al.  Bounded-memory Algorithms for Verification On-the-fly , 1991, CAV.

[18]  Michael D. Jones,et al.  Time-Efficient Model Checking with Magnetic Disk , 2005, TACAS.

[19]  Dragan Bosnacki,et al.  The Design of a Multicore Extension of the SPIN Model Checker , 2007, IEEE Transactions on Software Engineering.

[20]  S. Edelkamp,et al.  External Program Model Checking , 2006 .

[21]  Howard Barringer,et al.  CTL* model checking on a shared-memory architecture , 2006, Formal Methods Syst. Des..

[22]  Rafael Alonso,et al.  Distributed reachability analysis for protocol verification environments , 1988 .

[23]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[24]  David L. Dill,et al.  Parallelizing the Murϕ Verifier , 2001, Formal Methods Syst. Des..

[25]  Radu Mateescu,et al.  Parallel state space construction for model-checking , 2001, SPIN '01.

[26]  Lubos Brim,et al.  Cluster-Based LTL Model Checking of Large Systems , 2005, FMCO.

[27]  Michael Weber,et al.  "To Store or Not To Store" Reloaded: Reclaiming Memory on Demand , 2006, FMICS/PDMC.

[28]  Klaus Havelund,et al.  Model checking programs , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[29]  Frits W. Vaandrager,et al.  Distributing Timed Model Checking - How the Search Order Matters , 2000, CAV.

[30]  Flavio Lerda,et al.  Distributed-Memory Model Checking with SPIN , 1999, SPIN.

[31]  Kim G. Larsen,et al.  To Store or Not to Store , 2003, CAV.

[32]  Tilman Mehler,et al.  Challenges and Applications of Assembly-Level Software Model Checking , 2006, Künstliche Intell..

[33]  Shin Nakajima,et al.  The SPIN Model Checker : Primer and Reference Manual , 2004 .

[34]  U. Stern,et al.  Using Magnatic Disk Instead of Main Memory in the Murphi Verifier , 1998, CAV.

[35]  Michael D. Jones,et al.  Model Checking Machine Code with the GNU Debugger , 2005, SPIN.