Staged concurrent program analysis

Nishant Sinha, Chao Wang
2010 Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering - FSE '10  
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 interthread (concurrent) semantics. Such reasoning often involves repeated intra-thread reasoning for exploring each interleaving (interthread reasoning) and leads to
more » ... . 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.
doi:10.1145/1882291.1882301 dblp:conf/sigsoft/SinhaW10 fatcat:adxhqcqudzfgjmo43q2aucwtru