From Array Domains to Abstract Interpretation Under Store-Buffer-Based Memory Models [chapter]

Thibault Suzanne, Antoine Miné
2016 Lecture Notes in Computer Science  
We address the problem of verifying concurrent programs under store-buffer-based weakly consistent memory models, such as TSO or PSO. Using the abstract interpretation framework, we adapt existing domains for arrays to model store buffers and obtain a sound abstraction of program states (including the case of programs with infinite state space) parameterised by a numerical domain. Whereas the usual method for this kind of programs implements a program transformation to come back to an analysis
more » ... nder a sequentially consistent model, the novelty of our work consists in applying abstract interpretation directly on the source program, setting a clean foundation for special dedicated domains keeping information difficult to express with program transformations. We demonstrate the precision of this method on a few examples, targetting the TSO model and incidentally being also sound for PSO due to some specific abstraction choice. We discuss an application to fence removal and show that our implementation is usually able to remove as many or more fences, with respect to the state of the art, on concurrent algorithms designed for sequential consistency while still remaining precise enough to verify them. This work is partially supported by the project ANR-11-INSE-014 from the French Agence nationale de la recherche. 3 We will use the acronym SC, as it is usually done. 4 The result set of this program is x = 1, y = 1, r1 ∈ {0, 1}, r2 ∈ {0, 1}. Most static analyses are able to infer it exactly, and ours will too.
doi:10.1007/978-3-662-53413-7_23 fatcat:jfreslno2nfehcgqff35azfwqi