Distributed Dynamic Partial Order Reduction Based Verification of Threaded Software

  • Yu Yang
  • Xiaofang Chen
  • Ganesh Gopalakrishnan
  • Robert M. Kirby
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4595)


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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Flanagan, C., Godefroid, P.: Dynamic Partial-order Reduction for Model Checking Software. In: Palsberg, J., Abadi, M. (eds.) POPL, pp. 110–121. ACM Press, New York (2005)CrossRefGoogle Scholar
  2. 2.
    Yang, Y., Chen, X., Gopalakrishnan, G., Kirby, R.M.: UUCS-07-008: Runtime Model Checking of Multithreaded C Programs. Technical report (2007),
  3. 3.
    Godefroid, P.: Model Checking for Programming Languages using Verisoft. In: POPL, pp. 174–186 (1997)Google Scholar
  4. 4.
    Holzmann, G.J.: The Spin Model Checker: Primer and Reference Manual. Addison-Wesley, Reading (2004)Google Scholar
  5. 5.
    Robby, D.M.B., Hatcliff, J.: Bogor: an extensible and highly-modular software model checking framework. In: ESEC / SIGSOFT FSE, pp. 267–276 (2003)Google Scholar
  6. 6.
    Henzinger, T.A., Jhala, R., Majumdar, R.: Race checking by context inference. In: PLDI 2004. Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation, pp. 1–13. ACM Press, New York (2004)CrossRefGoogle Scholar
  7. 7.
    Andrews, T., Qadeer, S., Rajamani, S.K., Rehof, J., Xie, Y.: Zing: A Model Checker for Concurrent Software. In: Cointe, P. (ed.) ECOOP 1996. LNCS, vol. 1098, pp. 484–487. Springer, Heidelberg (1996)Google Scholar
  8. 8.
    Godefroid, P.: Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem. Springer, Heidelberg (1996)Google Scholar
  9. 9.
    Clarke, E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press, Cambridge (2000)Google Scholar
  10. 10.
    Snir, M., Otto, S.: MPI-The Complete Reference: The MPI Core. MIT Press, Cambridge (1998)Google Scholar
  11. 11.
  12. 12.
  13. 13.
  14. 14.
    Stern, U., Dill, D.L.: Parallelizing the Murhi Verifier. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 256–278. Springer, Heidelberg (1997)Google Scholar
  15. 15.
    Melatti, I., Palmer, R., Sawaya, G., Yang, Y., Kirby, R.M., Gopalakrishnan, G.: Parallel and Distributed Model Checking in Eddy. In: Valmari, A. (ed.) Model Checking Software. LNCS, vol. 3925, pp. 108–125. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  16. 16.
    Sivaraj, H., Gopalakrishnan, G.: Random Walk Based Heuristic Algorithms for Distributed Memory Model Checking. Electr. Notes Theor. Comput. Sci. 89(1) (2003)Google Scholar
  17. 17.
    Kumar, R., Mercer, E.G.: Load Balancing Parallel Explicit State Model Checking. Electr. Notes Theor. Comput. Sci. 128(3), 19–34 (2005)CrossRefGoogle Scholar
  18. 18.
    Holzmann, G., Bosnacki, D.: Multi-core model checking with Spin (2007)Google Scholar
  19. 19.
    Brim, L., Cerna, I., Moravec, P., Simsa, J.: Distributed Partial Order Reduction of State Spaces. PDMC (1) (2004)Google Scholar
  20. 20.
    Palmer, R., Gopalakrishnan, G.: Partial Order Reduction Assisted Parallel Model Checking. PDMC (2002)Google Scholar
  21. 21.
    Palmer, R., Gopalakrishnan, G.: A distributed partial order reduction algorithm. In: Peled, D.A., Vardi, M.Y. (eds.) FORTE 2002. LNCS, vol. 2529, p. 370. Springer, Heidelberg (2002)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Yu Yang
    • 1
  • Xiaofang Chen
    • 1
  • Ganesh Gopalakrishnan
    • 1
  • Robert M. Kirby
    • 1
  1. 1.School of Computing, University of Utah, Salt Lake City, UT 84112U.S.A.

Personalised recommendations