Software Verification for Weak Memory

Objectives

Modern multi-core microprocessors implement weak memory consistency models; prog­ramming for these architectures is a challenge. We want to adapt and use existing static analysis techniques to verify programs with respect to weak memory consistency, guided by the following objectives:

News
Oct 5th 2012New sound, optimised strategy for instrumenting critical cycles implemented in Goto-instrument
Jul 4th 2012We now analyse Apache's fdqueue module
Jun 24th 2012Concurrent CBMC added to the set of model checkers used for the experiments
Feb 22nd 2012We report distinct results for Poirot with integer vs. bitvector arithmetic
Feb 8th 2012SatAbs is now able to handle RCU!
Jan 23rd 2012Release of the tool and the Coq proofs

ESOP 2013: Software Verification for Weak Memory via Program Transformation

In this paper, we propose a sound transformation of the program to verify, enabling SC tools to perform verification w.r.t. weak memory. We present experiments for a broad variety of models (from x86-TSO to Power) and a vast range of verification tools, quantify the additional cost of the transformation and highlight the cases when we can drastically reduce it. Our benchmarks include work-queue management code from PostgreSQL.

goto-instrument

APLAS 2011: Soundness of Data-flow Analysis for Weak Memory Models

In this paper, we identify the data-flow analyses which are sound for weak memory models as is: the analyses based on non-relational domains. We also provide a non-trivial method for fixing analyses sound under sequential consistency but unsound for weaker consistency.

soundness
Download

We are releasing binaries for x86 Linux, the source code and the papers proofs.

CProver & Goto-instrument (ESOP'13)

Download, installation instructions and manual.

Source code of Goto-instrument.

Source code will be soon also available via
svn co http://www.cprover.org/svn/cbmc/releases/cbmc-4.3

Abstract machine proofs (ESOP'13)

Proof formalised in Coq.

Soundness condition proof (APLAS'11)

Proof formalised in Coq.

People