skip to main content
10.1007/978-3-540-31980-1_7guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Context-Bounded model checking of concurrent software

Published: 04 April 2005 Publication History

Abstract

The interaction among concurrently executing threads of a program results in insidious programming errors that are difficult to reproduce and fix. Unfortunately, the problem of verifying a concurrent boolean program is undecidable [24]. In this paper, we prove that the problem is decidable, even in the presence of unbounded parallelism, if the analysis is restricted to executions in which the number of context switches is bounded by an arbitrary constant. Restricting the analysis to executions with a bounded number of context switches is unsound. However, the analysis can still discover intricate bugs and is sound up to the bound since within each context, a thread is fully explored for unbounded stack depth. We present an analysis of a real concurrent system by the ZING model checker which demonstrates that the ability to model check with arbitrary but fixed context bound in the presence of unbounded parallelism is valuable in practice. Implementing context-bounded model checking in ZING is left for future work.

References

[1]
R. Alur and R. Grosu. Modular refinement of hierarchic reactive machines. In POPL 00: Principles of Programming Languages, pages 390-402. ACM, 2000.
[2]
T. Andrews, S. Qadeer, S. K. Rajamani, J. Rehof, and Y. Xie. Zing: Exploiting program structure for model checking concurrent software. In CONCUR 2004: Fifteenth International Conference on Concurrency Theory, London, U.K., September 2004, LNCS. Springer-Verlag, 2004. Invited paper.
[3]
J-M. Autebert, J. Berstel, and L. Boasson. Context-free languages and pushdown automata. In Handbook of Formal Languages, vol. 1 (Eds.: G. Rozenberg and A. Salomaa), pages 111 - 174. Springer-Verlag, 1997.
[4]
T. Ball and S. K. Rajamani. The SLAM project: Debugging system software via static analysis. In POPL 02: Principles of Programming Languages, pages 1-3. ACM, January 2002.
[5]
A. Bouajjani, J. Esparza, and T. Touili. A generic approach to the static analysis of concurrent programs with procedures. In POPL 03: Principles of Programming Languages, pages 62-73. ACM, 2003.
[6]
S. Chaki, E. M. Clarke, A. Groce, S. Jha, and H. Veith. Modular verification of software components in C. IEEE Transactions on Software Engineering, 30(6):388- 402, 2004.
[7]
E. M. Clarke, A. Biere, R. Raimi, and Y. Zhu. Bounded model checking using satisfiability solving. Formal Methods in System Design, 19(1):7-34, 2001.
[8]
E. M. Clarke and E. A. Emerson. Synthesis of synchronization skeletons for branching time temporal logic. In Logic of Programs, LNCS 131, pages 52-71. Springer-Verlag, 1981.
[9]
J. Corbett, M. Dwyer, John Hatcliff, Corina Pasareanu, Robby, S. Laubach, and H. Zheng. Bandera : Extracting finite-state models from Java source code. In ICSE 00: Software Engineering, 2000.
[10]
M. Das, S. Lerner, and M. Seigle. ESP: Path-sensitive program verification in polynomial time. In PLDI 02: Programming Language Design and Implementation, pages 57-69. ACM, 2002.
[11]
J. Esparza and A. Podelski. Efficient algorithms for pre* and post* on interprocedural parallel flow graphs. In POPL 00: Principles of Programming Languages, pages 1-11. ACM, 2000.
[12]
A. Finkel, B. Willems, and P. Wolper. A direct symbolic approach to model checking pushdown systems. Electronic Notes in Theoretical Computer Science, 9, 1997.
[13]
D. Giannakopoulou, C. S. Pasareanu, and H. Barringer. Assumption generation for software component verification. In ASE 02: Automated Software Engineering, pages 3-12, 2002.
[14]
P. Godefroid. Model checking for programming languages using verisoft. In POPL 97: Principles of Programming Languages, pages 174-186, 1997.
[15]
T. A. Henzinger, R. Jhala, and R. Majumdar. Race checking by context inference. In PLDI 04: Programming Language Design and Implementation, pages 1-13, 2004.
[16]
T. A. Henzinger, R. Jhala, R. Majumdar, and S. Qadeer. Thread-modular abstraction refinement. In CAV 03: Computer-Aided Verification, pages 262-274, 2003.
[17]
G. Holzmann. The model checker SPIN. IEEE Transactions on Software Engineering, 23(5):279-295, May 1997.
[18]
M. Musuvathi, D. Park, A. Chou, D. Engler, and D. L. Dill. CMC: A pragmatic approach to model checking real code. In OSDI 02: Operating Systems Design and Implementation, 2002.
[19]
F. Pong and M. Dubois. Verification techniques for cache coherence protocols. ACM Computing Surveys, 29(1):82-126, 1997.
[20]
S. Qadeer, S. K. Rajamani, and J. Rehof. Summarizing procedures in concurrent programs. In POPL 04: ACM Principles of Programming Languages, pages 245- 255. ACM, 2004.
[21]
S. Qadeer and J. Rehof. Context-bounded model checking of concurrent software. Technical Report MSR-TR-2004-70, Microsoft Research, 2004.
[22]
S. Qadeer and D. Wu. KISS: Keep it simple and seqeuential. In PLDI 04: Programming Language Design and Implementation, pages 14-24. ACM, 2004.
[23]
J. Queille and J. Sifakis. Specification and verification of concurrent systems in CESAR. In M. Dezani-Ciancaglini and U. Montanari, editors, Fifth International Symposium on Programming, Lecture Notes in Computer Science 137, pages 337- 351. Springer-Verlag, 1981.
[24]
G. Ramalingam. Context sensitive synchronization sensitive analysis is undecidable. ACM Trans. on Programming Languages and Systems, 22:416-430, 2000.
[25]
T. Reps, S. Horwitz, and M. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL 95: Principles of Programming Languages, pages 49-61. ACM, 1995.
[26]
Robby, M. Dwyer, and J. Hatcliff. Bogor: An extensible and highly-modular model checking framework. In FSE 03: Foundations of Software Engineering, pages 267- 276. ACM, 2003.
[27]
S. Schwoon. Model-Checking Pushdown Systems. PhD thesis, Lehrstuhl für Informatik VII der Technischen Universität München, 2000.
[28]
M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, pages 189-233. Prentice-Hall, 1981.
[29]
W. Visser, K. Havelund, G. Brat, and S. Park. Model checking programs. In ASE 00: Automated Software Engineering, pages 3-12, 2000.
[30]
E. Yahav. Verifying safety properties of concurrent Java programs using 3-valued logic. In POPL 01: Principles of Programming Languages, pages 27-40, 2001.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
TACAS'05: Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
April 2005
585 pages
ISBN:3540253335

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 04 April 2005

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 31 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media