Skip to main content
Log in

Relational interprocedural verification of concurrent programs

  • Special Section Paper
  • Published:
Software & Systems Modeling Aims and scope Submit manuscript

Abstract

We propose a general analysis method for recursive, concurrent programs that track effectively procedure calls and return in a concurrent context, even in the presence of unbounded recursion and infinite-state variables like integers. This method generalizes the relational interprocedural analysis of sequential programs to the concurrent case, and extends it to backward or coreachability analysis. We implemented it for programs with scalar variables and experimented with several classical synchronization protocols in order to illustrate the precision of our technique and also to analyze the approximations it performs.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Bouajjani, A., Müller-Olm, M., Touili, T.: Regular symbolic analysis of dynamic networks of pushdown systems. In: Concurrency Theory, CONCUR’05. LNCS, vol. 3653 (2005)

  2. Bryant R.E.: Graph-based algorithms for boolean function manipulation. IEEE Trans. Comput 35(8), 377 (1986)

    Google Scholar 

  3. Caucal D.: On the regular structure of prefix rewriting. Theor. Comput. Sci 106(1), 61 (1992)

    Article  MathSciNet  Google Scholar 

  4. Cousot, P., Cousot, R.: Static determination of dynamic properties of programs. In: 2nd Int. Symp. on Programming, Dunod, Paris (1976)

  5. Cousot, P., Cousot, R.: Static determination of dynamic properties of recursive procedures. In: IFIP Conf. on Formal Description of Programming Concepts (1977)

  6. Cousot P., Cousot R.: Abstract interpretation and application to logic programs. J. Logic Program 13(2–3), 103 (1992)

    Article  MathSciNet  MATH  Google Scholar 

  7. Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: Principles of Prog. Languages, POPL’78. ACM, New York (1978)

  8. Esparza, J., Knoop, J.: An automata-theoretic approach to interprocedural data-flow analysis. In: Foundations of Software Science and Computation Structure, FoSSaCS ’99. LNCS, vol. 1578 (1999)

  9. Esparza, J., Podelski, A.: Efficient algorithms for pre* and post* on interprocedural parallel flow graphs. In: Principles of Prog. Languages, POPL’00. ACM, New York (2000)

  10. Flanagan, C., Freund, S.N., Lifshin, M., Qadeer, S.: Types for atomicity: static checking and inference for java. ACM Trans. Program. Lang. Syst. 30(4) (2008)

  11. Flanagan C., Freund S.N., Qadeer S., Seshia S.A.: Modular verification of multithreaded programs. Theor. Comput. Sci 338(1–3), 153–183 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  12. Flanagan, C., Qadeer, S.: Thread-modular model checking. In: SPIN’03: Workshop on Model Checking Software. LNCS, vol. 2648 (2003)

  13. Ghenassia, F. (ed.): Transaction-Level Modeling with SystemC. TLM Concepts and Applications for Embedded Systems. Springer, Berlin (2005)

  14. Gopan, D., Reps, T.W.: Guided static analysis. In: Static Analysis Symposium, SAS’07. LNCS, vol. 4634 (Aug 2007)

  15. Gueta, G., Flanagan, C., Yahav, E., Sagiv, M.: Cartesian partial-order reduction. In: SPIN’07: Model Checking Software. LNCS, vol. 4595 (2007)

  16. Halbwachs N., Merchat D., Gonnord L.: Some ways to reduce the space dimension in polyhedra computations. Formal Methods Syst. Des 29(1), 79–95 (2006)

    Article  MATH  Google Scholar 

  17. Jeannet, B.: The BDDAPRON logico-numerical abstract domains library. http://www.inrialpes.fr/pop-art/people/bjeannet/bjeannet-forge/bddapron/

  18. Jeannet, B.: The ConcurInterproc interprocedural analyzer for concurrent programs. http://pop-art.inrialpes.fr/interproc/concurinterprocweb.cgi

  19. Jeannet, B.: The Fixpoint equation solver http://www.inrialpes.fr/pop-art/people/bjeannet/bjeannet-forge/fixpoint/

  20. Jeannet, B.: Relational interprocedural analysis of concurrent programs. Technical Report 6671, INRIA (Oct 2008)

  21. Jeannet, B.: Relational interprocedural verification of concurrent programs. In: Software Engineering and Formal Methods, SEFM’09. IEEE (Nov 2009)

  22. Jeannet, B.: Some experience on the software engineering of abstract interpretation tools. In: Int. Workshop on Tools for Automatic Program AnalysiS, TAPAS’2010. ENTCS, vol. 267, pp. 29–42. Elsevier, Amsterdam (2010)

  23. Jeannet, B., Loginov, A., Reps, T., Sagiv, M.: A relational approach to interprocedural shape analysis. In: Static Analysis Symposium, SAS’04. LNCS, vol. 3148 (2004)

  24. Jeannet, B., Loginov, A., Reps, T., Sagiv, M.: A relational approach to interprocedural shape analysis. ACM Trans. Program. Lang. Syst. (TOPLAS), 32(2), Article 5 (2010)

    Google Scholar 

  25. Jeannet, B., Miné, A.: APRON: A library of numerical abstract domains for static analysis. In: Computer Aided Verification, CAV’2009. LNCS, vol. 5643, pp. 661–667 (2009). http://apron.cri.ensmp.fr/library/

  26. Jeannet, B., Serwe, W.: Abstracting call stacks for interprocedural verification of imperative programs. In: Int. Conf. on Algebraic Methodology and Software Technology, AMAST’04. LNCS, vol. 3116 (2004)

  27. Knoop, J., Steffen, B.: The interprocedural coincidence theorem. In: Compiler Construction, CC’92. LNCS, vol. 641 (1992)

  28. Lal, A., Touili, T., Kidd, N., Reps, T.W.: Interprocedural analysis of concurrent programs under a context bound. In: Tools and Algorithms for the Construction and Analysis of Systems, TACAS’08. LNCS (2008)

  29. Lev-Ami, T., Sagiv, M.: TVLA: A system for implementing static analyses. In: Static Analysis Symposium, SAS’00, pp. 280–301 (2000)

  30. Malkis, A., Podelski, A., Rybalchenko, A.: Thread-modular verification is cartesian abstract interpretation. In: Int. Colloquium on Theoretical Aspects of Computing (ICTAC’06). LNCS, vol. 4281 (2006)

  31. Miné A.: The octagon abstract domain. Higher-Order Symb. Comput 19(1), 31–100 (2006)

    Article  MATH  Google Scholar 

  32. Patin, G., Sighireanu, M., Touili, T.: Spade: Verification of multithreaded dynamic and recursive programs. In: Computer Aided Verification, CAV’07. LNCS, vol. 4590 (2007)

  33. Qadeer, S., Rajamani, S.K., Rehof, J.: Summarizing procedures in concurrent programs. In: Principles of Programming Languages, POPL’04. ACM, New York (2004)

  34. Ramalingam G.: Context-sensitive synchronization-sensitive analysis is undecidable. ACM Trans. Program. Lang. Syst 22(2), 416–430 (2000)

    Article  Google Scholar 

  35. Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: Principles of Prog. Languages, POPL’95. ACM, New York (1995)

  36. Reps T., Schwoon S., Jha S., Melski D.: Weighted pushdown systems and their application to interprocedural dataflow analysis. Sci. Comput. Program 58(1–2), 206–263 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  37. Sagiv M., Reps T., Wilhelm R.: Parametric shape analysis via 3-valued logic. ACM Trans. Prog. Lang. Syst 24(3), 217–298 (2002)

    Article  Google Scholar 

  38. Sharir M., Pnueli A.: Semantic foundations of program analysis. In: Muchnick, S., Jones, N. (eds) Program Flow Analysis: Theory and Applications, chap.~7, Prentice Hall, Upper Saddle River (1981)

    Google Scholar 

  39. Somenzi, F.: Cudd: Colorado University Decision Diagram Package. ftp://vlsi.colorado.edu/pub

  40. Taubenfeld G.: Synchronization Algorithms and Concurrent Programming. Prentice Hall, Upper Saddle River (2006)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bertrand Jeannet.

Additional information

Communicated by Prof. Krishnan, Dr. Cerone, and Dr. Van Hung.

This work has been supported by the Conseil Général de l’Isère and the Région Rhône-Alpes as part of the OpenTLM project (pôle de compétitivité Minalogic).

Rights and permissions

Reprints and permissions

About this article

Cite this article

Jeannet, B. Relational interprocedural verification of concurrent programs. Softw Syst Model 12, 285–306 (2013). https://doi.org/10.1007/s10270-012-0230-7

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10270-012-0230-7

Keywords

Navigation