Model checking distributed systems by combining caching and process checkpointing

Verification of distributed software systems by model checking is not a straightforward task due to inter-process communication. Many software model checkers only explore the state space of a single multi-threaded process. Recent work proposes a technique that applies a cache to capture communication between the main process and its peers, and allows the model checker to complete state-space exploration. Although previous work handles non-deterministic output in the main process, any peer program is required to produce deterministic output. This paper introduces a process checkpointing tool. The combination of caching and process checkpointing makes it possible to handle non-determinism on both sides of communication. Peer states are saved as checkpoints and restored when the model checker backtracks and produces a request not available in the cache. We also introduce the concept of strategies to control the creation of checkpoints and the overhead caused by the checkpointing tool.

[1]  Masami Hagiya,et al.  Model Checking of Multi-Process Applications Using SBUML and GDB , 2005 .

[2]  Sebastian Burckhardt,et al.  Preemption Sealing for Efficient Concurrency Testing , 2010, TACAS.

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

[4]  Klaus Havelund,et al.  Model Checking Programs , 2004, Automated Software Engineering.

[5]  Cyrille Artho,et al.  Cache-Based Model Checking of Networked Applications: From Linear to Branching Time , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[6]  Gene Cooperman,et al.  Transparent User-Level Checkpointing for the Native Posix Thread Library for Linux , 2006, PDPTA.

[7]  Shrisha Rao,et al.  Distributed Systems: An Algorithmic Approach , 2008, IEEE Distributed Systems Online.

[8]  Gene Cooperman,et al.  DMTCP: Transparent checkpointing for cluster computations and the desktop , 2007, 2009 IEEE International Symposium on Parallel & Distributed Processing.

[9]  Whitfield Diffie,et al.  New Directions in Cryptography , 1976, IEEE Trans. Inf. Theory.

[10]  Jeff Dike,et al.  User-mode Linux , 2006, Annual Linux Showcase & Conference.

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

[12]  Tevfik Bultan,et al.  Netstub: a framework for verification of distributed java applications , 2007, ASE '07.

[13]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[14]  Cyrille Artho,et al.  Efficient Model Checking of Networked Applications , 2008, TOOLS.

[15]  Yanhong A. Liu,et al.  Transformations for model checking distributed Java programs , 2001, SPIN '01.

[16]  Cyrille Artho,et al.  Accurate Centralization for Applying Model Checking on Networked Applications , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[17]  stallman-richard-m-cygnus-solutions Debugging with GDB: The GNU Source-Level Debugger for GDB , 2000 .

[18]  Cyrille Artho,et al.  Verifying networked programs using a model checker extension , 2009, 2009 31st International Conference on Software Engineering - Companion Volume.

[19]  Matthew B. Dwyer Proceedings of the 8th international SPIN workshop on Model checking of software , 2001 .

[20]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.