SimGrid MC: Verification Support for a Multi-API Simulation Platform

  • Stephan Merz
  • Martin Quinson
  • Cristian Rosa
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6722)


SimGrid MC is a stateless model checker for distributed systems that is part of the SimGrid Simulation Framework. It verifies implementations of distributed algorithms, written in C and using any of several communication APIs provided by the simulator. Because the model checker is fully integrated in the simulator that programmers use to validate their implementations, they gain powerful verification capabilities without having to adapt their code. We describe the architecture of SimGrid MC, and show how it copes with the state space explosion problem. In particular, we argue that a generic Dynamic Partial Order Reductions algorithm is effective for handling the different communication APIs that are provided by SimGrid. As a case study, we verify an implementation of Chord, where SimGrid MC helped us discover an intricate bug in a matter of seconds.


Model Checker Global State State Exploration Model Check Technique Exploration Algorithm 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Hennessy, M.: Algebraic Theory of Processes. MIT Press, Cambridge (1988)zbMATHGoogle Scholar
  2. 2.
    Reisig, W.: A Primer in Petri Net Design. Springer, Heidelberg (1992)CrossRefzbMATHGoogle Scholar
  3. 3.
    Holzmann, G.J.: The model checker Spin. IEEE Trans. Softw. Eng. 23(5), 279–295 (1997)CrossRefGoogle Scholar
  4. 4.
    Lamport, L.: Specifying Systems. Addison-Wesley, Boston (2002)zbMATHGoogle Scholar
  5. 5.
    Visser, W., Havelund, K.: Model checking programs. Automated Software Engineering Journal, 3–12 (2000)Google Scholar
  6. 6.
    Killian, C.E., Anderson, J.W., Braud, R., Jhala, R., Vahdat, A.M.: Mace: language support for building distributed systems. In: Proceedings of the ACM SIGPLAN conference on Programming language design and implementation PLDI 2007, pp. 179–188. ACM, New York (2007)CrossRefGoogle Scholar
  7. 7.
    Musuvathi, M., Qadeer, S.: Fair stateless model checking. In: Proceedings of the ACM SIGPLAN conference on Programming language design and implementation PLDI 2008, pp. 362–371. ACM Press, New York (2008)CrossRefGoogle Scholar
  8. 8.
    Musuvathi, M., Park, D.Y.W., Chou, A., Engler, D.R., Dill, D.L.: CMC: A pragmatic approach to model checking real code. In: Proceedings of the Fifth Symposium on Operating Systems Design and Implementation, OSDI 2002 (2002)Google Scholar
  9. 9.
    Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. SIGPLAN Not. 40(1), 110–121 (2005)CrossRefGoogle Scholar
  10. 10.
    Palmer, R., Gopalakrishnan, G., Kirby, R.M.: Semantics driven dynamic partial-order reduction of MPI-based parallel programs. In: Proceedings of the ACM workshop on Parallel and distributed systems: testing and debugging PADTAD 2007, pp. 43–53. ACM, New York (2007)CrossRefGoogle Scholar
  11. 11.
    Casanova, H., Legrand, A., Quinson, M.: SimGrid: a Generic Framework for Large-Scale Distributed Experiments. In: 10th IEEE International Conference on Computer Modeling and Simulation (March 2008)Google Scholar
  12. 12.
    Godefroid, P.: Model checking for programming languages using VeriSoft. In: Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages POPL 1997, pp. 174–186. ACM, New York (1997)Google Scholar
  13. 13.
    Vo, A., Vakkalanka, S., DeLisi, M., Gopalakrishnan, G., Kirby, R.M., Thakur, R.: Formal verification of practical MPI programs. SIGPLAN Not. 44(4), 261–270 (2009)CrossRefGoogle Scholar
  14. 14.
    Iosif, R.: Exploiting heap symmetries in explicit-state model checking of software. In: Proceedings of the 16th IEEE international conference on Automated software engineering, ASE 2001, vol. 254, IEEE Computer Society, Washington (2001)Google Scholar
  15. 15.
    Rosa, C., Merz, S., Quinson, M.: A simple model of communication APIs – Application to dynamic partial-order reduction. In: 10th Intl. Workshop Automated Verification of Critical Systems, Düsseldorf, Germany, pp. 137–152 (2010)Google Scholar
  16. 16.
    Stoica, I., Morris, R., Karger, D., Kaashoek, M.F., Balakrishnan, H.: Chord: A scalable peer-to-peer lookup service for internet applications. SIGCOMM Comput. Commun. Rev. 31, 149–160 (2001)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Stephan Merz
    • 1
  • Martin Quinson
    • 2
  • Cristian Rosa
    • 2
  1. 1.NRIA Research CenterNancyFrance
  2. 2.Université Henri Poincaré Nancy 1NancyFrance

Personalised recommendations