English

Lazy TSO Reachability

Programming Languages 2015-01-13 v1

Abstract

We address the problem of checking state reachability for programs running under Total Store Order (TSO). The problem has been shown to be decidable but the cost is prohibitive, namely non-primitive recursive. We propose here to give up completeness. Our contribution is a new algorithm for TSO reachability: it uses the standard SC semantics and introduces the TSO semantics lazily and only where needed. At the heart of our algorithm is an iterative refinement of the program of interest. If the program's goal state is SC-reachable, we are done. If the goal state is not SC-reachable, this may be due to the fact that SC under-approximates TSO. We employ a second algorithm that determines TSO computations which are infeasible under SC, and hence likely to lead to new states. We enrich the program to emulate, under SC, these TSO computations. Altogether, this yields an iterative under-approximation that we prove sound and complete for bug hunting, i.e., a semi-decision procedure halting for positive cases of reachability. We have implemented the procedure as an extension to the tool Trencher and compared it to the Memorax and CBMC model checkers.

Keywords

Cite

@article{arxiv.1501.02683,
  title  = {Lazy TSO Reachability},
  author = {Ahmed Bouajjani and Georgel Calin and Egor Derevenetc and Roland Meyer},
  journal= {arXiv preprint arXiv:1501.02683},
  year   = {2015}
}

Comments

accepted to FASE 2015

R2 v1 2026-06-22T07:58:30.149Z