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.
Similar content being viewed by others
References
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)
Bryant R.E.: Graph-based algorithms for boolean function manipulation. IEEE Trans. Comput 35(8), 377 (1986)
Caucal D.: On the regular structure of prefix rewriting. Theor. Comput. Sci 106(1), 61 (1992)
Cousot, P., Cousot, R.: Static determination of dynamic properties of programs. In: 2nd Int. Symp. on Programming, Dunod, Paris (1976)
Cousot, P., Cousot, R.: Static determination of dynamic properties of recursive procedures. In: IFIP Conf. on Formal Description of Programming Concepts (1977)
Cousot P., Cousot R.: Abstract interpretation and application to logic programs. J. Logic Program 13(2–3), 103 (1992)
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)
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)
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)
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)
Flanagan C., Freund S.N., Qadeer S., Seshia S.A.: Modular verification of multithreaded programs. Theor. Comput. Sci 338(1–3), 153–183 (2005)
Flanagan, C., Qadeer, S.: Thread-modular model checking. In: SPIN’03: Workshop on Model Checking Software. LNCS, vol. 2648 (2003)
Ghenassia, F. (ed.): Transaction-Level Modeling with SystemC. TLM Concepts and Applications for Embedded Systems. Springer, Berlin (2005)
Gopan, D., Reps, T.W.: Guided static analysis. In: Static Analysis Symposium, SAS’07. LNCS, vol. 4634 (Aug 2007)
Gueta, G., Flanagan, C., Yahav, E., Sagiv, M.: Cartesian partial-order reduction. In: SPIN’07: Model Checking Software. LNCS, vol. 4595 (2007)
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)
Jeannet, B.: The BDDAPRON logico-numerical abstract domains library. http://www.inrialpes.fr/pop-art/people/bjeannet/bjeannet-forge/bddapron/
Jeannet, B.: The ConcurInterproc interprocedural analyzer for concurrent programs. http://pop-art.inrialpes.fr/interproc/concurinterprocweb.cgi
Jeannet, B.: The Fixpoint equation solver http://www.inrialpes.fr/pop-art/people/bjeannet/bjeannet-forge/fixpoint/
Jeannet, B.: Relational interprocedural analysis of concurrent programs. Technical Report 6671, INRIA (Oct 2008)
Jeannet, B.: Relational interprocedural verification of concurrent programs. In: Software Engineering and Formal Methods, SEFM’09. IEEE (Nov 2009)
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)
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)
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)
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/
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)
Knoop, J., Steffen, B.: The interprocedural coincidence theorem. In: Compiler Construction, CC’92. LNCS, vol. 641 (1992)
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)
Lev-Ami, T., Sagiv, M.: TVLA: A system for implementing static analyses. In: Static Analysis Symposium, SAS’00, pp. 280–301 (2000)
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)
Miné A.: The octagon abstract domain. Higher-Order Symb. Comput 19(1), 31–100 (2006)
Patin, G., Sighireanu, M., Touili, T.: Spade: Verification of multithreaded dynamic and recursive programs. In: Computer Aided Verification, CAV’07. LNCS, vol. 4590 (2007)
Qadeer, S., Rajamani, S.K., Rehof, J.: Summarizing procedures in concurrent programs. In: Principles of Programming Languages, POPL’04. ACM, New York (2004)
Ramalingam G.: Context-sensitive synchronization-sensitive analysis is undecidable. ACM Trans. Program. Lang. Syst 22(2), 416–430 (2000)
Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: Principles of Prog. Languages, POPL’95. ACM, New York (1995)
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)
Sagiv M., Reps T., Wilhelm R.: Parametric shape analysis via 3-valued logic. ACM Trans. Prog. Lang. Syst 24(3), 217–298 (2002)
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)
Somenzi, F.: Cudd: Colorado University Decision Diagram Package. ftp://vlsi.colorado.edu/pub
Taubenfeld G.: Synchronization Algorithms and Concurrent Programming. Prentice Hall, Upper Saddle River (2006)
Author information
Authors and Affiliations
Corresponding author
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
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
Received:
Revised:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10270-012-0230-7