Skip to content

Latest commit

 

History

History
35 lines (28 loc) · 1.64 KB

File metadata and controls

35 lines (28 loc) · 1.64 KB

GenMC: A Generic Model Checker for Concurrent Programs

GenMC is a stateless model checker for concurrent programs written under the SC [Lamport 1979], TSO [Owens et al. 2009], RA [Lahav et al. 2016], RC11 [Lahav et al. 2017], and IMM [Podkopaev et al. 2019] memory models. It primarily targets C/C++ and Rust programs, verifying safety properties by analyzing their concurrency patterns (e.g., usage of C11 atomics or Rust's std::sync). It employs an effective dynamic partial order reduction technique [Kokologiannakis et al. 2019, Kokologiannakis et al. 2022] that is sound, complete, and optimal.

GenMC operates at the level of LLVM Intermediate Representation (LLVM-IR). It uses clang to translate C/C++ programs and rustc to translate Rust programs into LLVM-IR. This intermediate approach allows GenMC to be language-agnostic regarding its core verification logic, though it relies on language-specific frontends for translation.

GenMC should compile on Linux and MacOS provided that the relevant dependencies are installed (see README.md).

Table of Contents

Contact

For feedback, questions, and bug reports please send an e-mail to michalis.kokologiannakis@inf.ethz.ch.