Distributed Dynamic Partial Order Reduction Based Verification of Threaded Software

Runtime (dynamic) model checking is a promising verification methodology for real-world threaded software because of its many features, the prominent ones being: (i) it avoids the need to extract a model and instead runs the actual code, and (ii) the precision of information available at run-time allows techniques such as dynamic partial order reduction (DPOR) [1] to dramatically cut down the number of interleavings examined. Unfortunately, DPOR does not have many implementations for real thread libraries such as POSIX Pthreads, and suffers from high computational overheads due to a stateless search that requires re-executions. In our previous work [2], we designed a runtime model checker, inspect, that overcomes the first of these drawbacks. Inspect has been shown capable of detecting data races, deadlocks and other incorrect API usages in real-world PThreads C programs. In this paper, we describe a distributed version of inspect, which implements an extended DPOR algorithm. Our two key contributions are: (i) a practical algorithm for distributed dynamic partial order reduction; (ii) the innovations that helped distributed inspect attain nearly linear (with respect to the number of CPUs) speedup on realistic examples.

[1]  R. Kirby,et al.  Runtime Model Checking of Multithreaded C / C + + Programs , 2022 .

[2]  Patrice Godefroid,et al.  Partial-Order Methods for the Verification of Concurrent Systems , 1996, Lecture Notes in Computer Science.

[3]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

[4]  Ganesh Gopalakrishnan,et al.  Random Walk Based Heuristic Algorithms for Distributed Memory Model Checking , 2003, PDMC@CAV.

[5]  Yu Yang,et al.  Parallel and distributed model checking in Eddy , 2006, International Journal on Software Tools for Technology Transfer.

[6]  Jakob Rehof,et al.  Zing: A Model Checker for Concurrent Software , 2004, CAV.

[7]  Matthew B. Dwyer,et al.  Bogor: an extensible and highly-modular software model checking framework , 2003, ESEC/FSE-11.

[8]  Thomas A. Henzinger,et al.  Race checking by context inference , 2004, PLDI '04.

[9]  Rahul Kumar,et al.  Load Balancing Parallel Explicit State Model Checking , 2005, PDMC.

[10]  Lubos Brim,et al.  Distributed Partial Order Reduction of State Spaces , 2005, Electron. Notes Theor. Comput. Sci..

[11]  Ganesh Gopalakrishnan,et al.  Partial Order Reduction Assisted Parallel Model-Checking , 2002 .

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

[13]  Ganesh Gopalakrishnan,et al.  A Distributed Partial Order Reduction Algorithm , 2002, FORTE.

[14]  Dragan Bosnacki,et al.  Multi-Core Model Checking with SPIN , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

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

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

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

[18]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.