We present a dynamic verification tool MCC for Multicore Communication API applications — a new API for communication among cores. MCC systematically explores all relevant interleavings of an MCAPI application using a tailor-made dynamic partial order reduction algorithm (DPOR). Our contributions are (i) a way to model the non-overtaking message matching relation underlying MCAPI calls with a high level algorithm to effect DPOR for MCAPI that controls the lower level details so that the intended executions happen at runtime; and (ii) a list of default safety properties that can be utilized in the process of verification. To our knowledge, this is the first push button model checker for MCAPI application writers that, at present, deals with an interesting subset of MCAPI calls. Our result is the demonstration that we can indeed develop a dynamic model checker for MCAPI that can directly control the non-deterministic behavior at runtime that is inherent in any implementation of the library without additional API modifications or additions.
[1]
Patrice Godefroid,et al.
VeriSoft: A Tool for the Automatic Analysis of Concurrent Reactive Software
,
1997,
CAV.
[2]
Ganesh Gopalakrishnan,et al.
Dynamic Verification of MPI Programs with Reductions in Presence of Split Operations and Relaxed Orderings
,
2008,
CAV.
[3]
Madan Musuvathi,et al.
Iterative context bounding for systematic testing of multithreaded programs
,
2007,
PLDI '07.
[4]
Stephan Merz,et al.
Model Checking
,
2000
.
[5]
Patrice Godefroid,et al.
Dynamic partial-order reduction for model checking software
,
2005,
POPL '05.
[6]
Yu Yang,et al.
Distributed Dynamic Partial Order Reduction Based Verification of Threaded Software
,
2007,
SPIN.
[7]
Ganesh Gopalakrishnan,et al.
ISP: a tool for model checking MPI programs
,
2008,
PPOPP.
[8]
Patrice Godefroid,et al.
Software Model Checking: The VeriSoft Approach
,
2005,
Formal Methods Syst. Des..