kirancodes.me
To Proof Maintenance & Beyond!

Staged concurrent program analysis

Nishant Sinha, Chao Wang

Abstract

Concurrent program verification is challenging because it involves exploring a large number of possible thread interleavings together with complex sequential reasoning. As a result, concurrent program verifiers resort to bi-modal reasoning, which alternates between reasoning over intra-thread (sequential) semantics and inter-thread (concurrent) semantics. Such reasoning often involves repeated intra-thread reasoning for exploring each interleaving (inter-thread reasoning) and leads to inefficiency. In this paper, we present a new two-stage analysis which completely separates intra- and inter-thread reasoning. The first stage uses sequential program semantics to obtain a precise summary of each thread in terms of the global accesses made by the thread. The second stage performs inter-thread reasoning by composing these thread-modular summaries using the notion of sequential consistency. Assertion violations and other concurrency errors are then checked in this composition with the help of an off-the-shelf SMT solver. We have implemented our approach in the FUSION framework for checking concurrent C programs shows that avoiding redundant bi-modal reasoning makes the analysis more scalable.

BibTeX
@inproceedings{Sinha-Wang:FSE10,
  author    = {Nishant Sinha and
               Chao Wang},
  title     = {Staged concurrent program analysis},
  booktitle = {FSE},
  pages     = {47--56},
  publisher = {{ACM}},
  year      = {2010},
}

Related papers