International Conference on Tools and Algorithms for the Construction and Analysis of Systems

TACAS 2006: Tools and Algorithms for the Construction and Analysis of Systems pp 334-349

Verifying Concurrent Message-Passing C Programs with Recursive Calls

  • S. Chaki
  • E. Clarke
  • N. Kidd
  • T. Reps
  • T. Touili
Conference paper

DOI: 10.1007/11691372_22

Volume 3920 of the book series Lecture Notes in Computer Science (LNCS)
Cite this paper as:
Chaki S., Clarke E., Kidd N., Reps T., Touili T. (2006) Verifying Concurrent Message-Passing C Programs with Recursive Calls. In: Hermanns H., Palsberg J. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2006. Lecture Notes in Computer Science, vol 3920. Springer, Berlin, Heidelberg

Abstract

We consider the model-checking problem for C programs with (1) data ranging over very large domains, (2) (recursive) procedure calls, and (3) concurrent parallel components that communicate via synchronizing actions. We model such programs using communicating pushdown systems, and reduce the reachability problem for this model to deciding the emptiness of the intersection of two context-free languages L1 and L2. We tackle this undecidable problem using a CounterExample Guided Abstraction Refinement (CEGAR) scheme. We implemented our technique in the model checker MAGIC and found a previously unknown bug in a version of a Windows NT Bluetooth driver.

Download to read the full conference paper text

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • S. Chaki
    • 1
  • E. Clarke
    • 1
  • N. Kidd
    • 2
  • T. Reps
    • 2
  • T. Touili
    • 3
  1. 1.Carnegie Mellon UniversityPittsburghUSA
  2. 2.University of WisconsinMadisonUSA
  3. 3.LIAFACNRS & University of Paris 7ParisFrance