Effective stateless model checking for C/C++ concurrency

Michalis Kokologiannakis, Ori Lahav, Konstantinos Sagonas, Viktor Vafeiadis

Research output: Contribution to journalArticlepeer-review

86 Scopus citations

Abstract

We present a stateless model checking algorithm for verifying concurrent programs running under RC11, a repaired version of the C/C++11 memory model without dependency cycles. Unlike most previous approaches, which enumerate thread interleavings up to some partial order reduction improvements, our approach works directly on execution graphs and (in the absence of RMW instructions and SC atomics) avoids redundant exploration by construction. We have implemented a model checker, called RCMC, based on this approach and applied it to a number of challenging concurrent programs. Our experiments confirm that RCMC is significantly faster, scales better than other model checking tools, and is also more resilient to small changes in the benchmarks.

Original languageEnglish
Article number17
JournalProceedings of the ACM on Programming Languages
Volume2
Issue numberPOPL
DOIs
StatePublished - Jan 2018

Funding

FundersFunder number
Horizon 2020 Framework Programme683289

    Keywords

    • C/C++11
    • RC11
    • Software model checking
    • Weak memory models

    Fingerprint

    Dive into the research topics of 'Effective stateless model checking for C/C++ concurrency'. Together they form a unique fingerprint.

    Cite this