ACM Transactions on Programming Languages and Systems · 2021 · 16 citations · 35 references
ComputingComputer ScienceFormal MethodsProgramming LanguagesTheory Of ComputationConcurrency AnalysisConcurrency VerificationConcurrent ProgrammingConcurrent System VerificationModel CheckingBounded Model CheckingConcurrent Program TestingConcurrent Program VerificationModel Checking For ConcurrencySoftware VerificationVerification Of Concurrent Programs
Bounded verification techniques such as bounded model checking (BMC) have successfully been used for many practical program analysis problems, but concurrency still poses a challenge. Here, we describe a new approach to BMC of sequentially consistent imperative programs that use POSIX threads. We first translate the multi-threaded program into a nondeterministic sequential program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. We then reuse existing high-performance BMC tools as backends for the sequential verification problem. Our translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so it produces tight SAT/SMT formulae, and is thus very effective in practice: Our Lazy-CSeq tool implementing this translation for the C programming language won several gold and silver medals in the concurrency category of the Software Verification Competitions (SV-COMP) 2014–2021 and was able to find errors in programs where all other techniques (including testing) failed. In this article, we give a detailed description of our translation and prove its correctness, sketch its implementation using the CSeq framework, and report on a detailed evaluation and comparison of our approach.
35
Statecharts: a visual formalism for complex systems
David Harel · Science of Computer Programming · 1987 · 6.7K citations
Finding and Reproducing Heisenbugs in Concurrent Programs
2008 · 537 citations
DMS: Program Transformations for Practical Scalable Software Evolution
2004 · 212 citations
A scalable lock-free stack algorithm
Danny Hendler, Nir Shavit, Lena Yerushalmi · 2004 · 203 citations