Hybrid Analysis for Partial Order Reduction of Programs with Arrays

  • Pavel ParízekEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9583)


An important component of efficient approaches to software model checking and systematic concurrency testing is partial order reduction, which eliminates redundant non-deterministic thread scheduling choices during the state space traversal. Thread choices have to be created only at the execution of actions that access the global state visible by multiple threads, so the key challenge is to precisely determine the set of such globally-relevant actions. This includes accesses to object fields and array elements, and thread synchronization.

However, some tools completely disable thread choices at actions that access individual array elements in order to avoid state explosion. We show that they can miss concurrency errors in such a case. Then, as the main contribution, we present a new hybrid analysis that identifies globally-relevant actions that access arrays. Our hybrid analysis combines static analysis with dynamic analysis, usage of information from dynamic program states, and symbolic interpretation of program statements. Results of experiments with two popular approaches to partial order reduction show that usage of the hybrid analysis (1) eliminates many additional redundant thread choices and (2) improves the performance of software model checking on programs that use arrays.


Hybrid Analysis Array Element Multiple Thread Benchmark Program Partial Order Reduction 
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.



This work was partially supported by the Grant Agency of the Czech Republic project 13-12121P.


  1. 1.
    Ball, T., Burckhardt, S., Coons, K.E., Musuvathi, M., Qadeer, S.: Preemption sealing for efficient concurrency testing. In: Esparza, J., Majumdar, R. (eds.) TACAS 2010. LNCS, vol. 6015, pp. 420–434. Springer, Heidelberg (2010) CrossRefGoogle Scholar
  2. 2.
  3. 3.
    Dwyer, M., Hatcliff, J., Ranganath, V., Robby, : Exploiting object escape and locking information in partial-order reductions for concurrent object-oriented programs. Formal Meth. Syst. Des. 25, 199–240 (2004)zbMATHCrossRefGoogle Scholar
  4. 4.
    Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: Proceedings of POPL 2005. ACM (2005)Google Scholar
  5. 5.
    Godefroid, P. (ed.): Partial-Order Methods for the Verification of Concurrent Systems. LNCS, vol. 1032. Springer, Heidelberg (1996) zbMATHGoogle Scholar
  6. 6.
    Gueta, G., Flanagan, C., Yahav, E., Sagiv, M.: Cartesian partial-order reduction. In: Bošnački, D., Edelkamp, S. (eds.) SPIN 2007. LNCS, vol. 4595, pp. 95–112. Springer, Heidelberg (2007) CrossRefGoogle Scholar
  7. 7.
  8. 8.
    Java Pathfinder: a system for verification of Java programs.
  9. 9.
    Li, D., Srisa-an, W., Dwyer, M.B.: SOS: saving time in dynamic race detection with stationary analysis. In: Proceedings of OOPSLA 2011. ACM (2011)Google Scholar
  10. 10.
    Manson, J., Pugh, W., Adve, S.V.: The Java memory model. In: Proceedings of POPL 2005. ACM (2005)Google Scholar
  11. 11.
    Marron, M., Mendez-Lojo, M., Hermenegildo, M., Stefanovic, D., Kapur, D.: Sharing analysis of arrays, collections, and recursive structures. In: Proceedings of PASTE 2008. ACM (2008)Google Scholar
  12. 12.
    Noonan, E., Mercer, E., Rungta, N.: Vector-clock based partial order reduction for JPF. ACM SIGSOFT Softw. Eng. Notes 39(1), 1–5 (2014)CrossRefGoogle Scholar
  13. 13.
    pjbench: Parallel Java Benchmarks.
  14. 14.
    Parizek, P., Jancik, P.: Approximating happens-before order: interplay between static analysis and state space traversal. In: Proceedings of SPIN 2014. ACM (2014)Google Scholar
  15. 15.
    Parizek, P., Lhotak, O.: Identifying future field accesses in exhaustive state space traversal. In: Proceedings of ASE 2011. IEEE CS (2011)Google Scholar
  16. 16.
    Parizek, P., Lhotak, O.: Model checking of concurrent programs with static analysis of field accesses. Sci. Comput. Program. 98, 735–763 (2015)CrossRefGoogle Scholar
  17. 17.
    Sagiv, M., Reps, T., Wilhelm, R.: Parametric shape analysis via 3-valued logic. ACM Trans. Program. Lang. Syst. 24(3), 217–298 (2002)CrossRefGoogle Scholar
  18. 18.
    Schaefer, M., Sridharan, M., Dolby, J., Tip, F.: Dynamic determinacy analysis. In: Proceedings of PLDI 2013. ACM (2013)Google Scholar
  19. 19.
    Sewell, P., Sarkar, S., Owens, S., Nardelli, F.Z., Myreen, M.: x86-TSO: a rigorous and usable programmer’s model for x86 multiprocessors. Comm. ACM 53(7), 89–97 (2010)CrossRefGoogle Scholar
  20. 20.
    Thomson, P., Donaldson, A., Betts, A.: Concurrency testing using schedule bounding: an empirical study. In: Proceedings of PPoPP 2014. ACM (2014)Google Scholar
  21. 21.
    Unkel, C., Lam, M.S.: Automatic inference of stationary fields: a generalization of Java’s final fields. In: Proceedings of POPL 2008. ACM (2008)Google Scholar
  22. 22.
    Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model checking programs. Autom. Softw. Eng. 10(2), 203–232 (2003)CrossRefGoogle Scholar
  23. 23.
    Wala, T.J.: Watson Libraries for Analysis.
  24. 24.
    Yang, Y., Chen, X., Gopalakrishnan, G.C., Kirby, R.M.: Efficient stateful dynamic partial order reduction. In: Havelund, K., Majumdar, R. (eds.) SPIN 2008. LNCS, vol. 5156, pp. 288–305. Springer, Heidelberg (2008) CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2016

Authors and Affiliations

  1. 1.Department of Distributed and Dependable Systems, Faculty of Mathematics and PhysicsCharles University in PraguePragueCzech Republic

Personalised recommendations