Deciding reachability under persistent x86-TSO

We address the problem of verifying the reachability problem in programs running under the formal model Px86 defined recently by Raad et al. in POPL'20 for the persistent Intel x86 architecture. We prove that this problem is decidable. To achieve that, we provide a new formal model that is equivalent to Px86 and that has the feature of being a well structured system. Deriving this new model is the result of a deep investigation of the properties of Px86 and the interplay of its components.

[1]  Mohamed Faouzi Atig,et al.  Context-Bounded Analysis of TSO Systems , 2014, FPS@ETAPS.

[2]  Parosh Aziz Abdulla,et al.  Optimal stateless model checking under the release-acquire semantics , 2018, Proc. ACM Program. Lang..

[3]  Parosh Aziz Abdulla,et al.  Stateless Model Checking for POWER , 2016, CAV.

[4]  James R. Larus,et al.  Object-oriented recovery for non-volatile memory , 2018, Proc. ACM Program. Lang..

[5]  Parosh Aziz Abdulla,et al.  A Load-Buffer Semantics for Total Store Ordering , 2017, Log. Methods Comput. Sci..

[6]  Parosh Aziz Abdulla,et al.  Verification of programs under the release-acquire semantics , 2019, PLDI.

[7]  Parosh Aziz Abdulla,et al.  Verifying Programs with Unreliable Channels , 1996, Inf. Comput..

[8]  Peter Sewell,et al.  An operational semantics for C/C++11 concurrency , 2016, OOPSLA.

[9]  Daniel Kroening,et al.  Partial Orders for Efficient Bounded Model Checking of Concurrent Software , 2013, CAV.

[10]  Sebastian Burckhardt,et al.  Principles of Eventual Consistency , 2014, Found. Trends Program. Lang..

[11]  Sebastian Burckhardt,et al.  On the verification problem for weak memory models , 2010, POPL '10.

[12]  Ali Sezgin,et al.  Modelling the ARMv8 architecture, operationally: concurrency and ISA , 2016, POPL.

[13]  Parosh Aziz Abdulla,et al.  Context-Bounded Analysis for POWER , 2017, TACAS.

[14]  Sebastian Burckhardt,et al.  What's Decidable about Weak Memory Models? , 2012, ESOP.

[15]  Daniel Kroening,et al.  Software Verification for Weak Memory via Program Transformation , 2012, ESOP.

[16]  Mohamed Faouzi Atig,et al.  Getting Rid of Store-Buffers in TSO Analysis , 2011, CAV.

[17]  Rajeev Alur,et al.  An Axiomatic Memory Model for POWER Multiprocessors , 2012, CAV.

[18]  Viktor Vafeiadis,et al.  Persistence semantics for weak memory: integrating epoch persistency with the TSO memory model , 2018, Proc. ACM Program. Lang..

[19]  Viktor Vafeiadis,et al.  Weak persistency semantics from the ground up: formalising the persistency semantics of ARMv8 and transactional models , 2019, Proc. ACM Program. Lang..

[20]  Samira Khan,et al.  Cross-Failure Bug Detection in Persistent Memory Programs , 2020, ASPLOS.

[21]  Ori Lahav,et al.  Effective stateless model checking for C/C++ concurrency , 2017, Proc. ACM Program. Lang..

[22]  Parosh Aziz Abdulla,et al.  Stateless model checking for TSO and PSO , 2015, Acta Informatica.

[23]  LahavOri,et al.  Bridging the gap between programming languages and hardware weak memory models , 2019 .

[24]  Viktor Vafeiadis,et al.  Effective lock handling in stateless model checking , 2019, Proc. ACM Program. Lang..

[25]  Ori Lahav,et al.  Decidable verification under a causally consistent shared memory , 2020, PLDI.

[26]  Peter Sewell,et al.  Mathematizing C++ concurrency , 2011, POPL '11.

[27]  Parosh Aziz Abdulla,et al.  General decidability theorems for infinite-state systems , 1996, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[28]  Ori Lahav,et al.  Taming release-acquire consistency , 2016, POPL.

[29]  Thomas F. Wenisch,et al.  Memory persistency , 2014, 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA).

[30]  Viktor Vafeiadis,et al.  Persistency semantics of the Intel-x86 architecture , 2019, Proc. ACM Program. Lang..

[31]  Jeehoon Kang,et al.  A promising semantics for relaxed-memory concurrency , 2017, POPL.

[32]  Philippe Schnoebelen,et al.  Well-structured transition systems everywhere! , 2001, Theor. Comput. Sci..

[33]  Andrew Pavlo,et al.  How to Build a Non-Volatile Memory Database Management System , 2017, SIGMOD Conference.

[34]  Francesco Zappa Nardelli,et al.  86-TSO : A Rigorous and Usable Programmer ’ s Model for x 86 Multiprocessors , 2010 .

[35]  Jishen Zhao,et al.  PMTest: A Fast and Flexible Testing Framework for Persistent Memory Programs , 2019, ASPLOS.

[36]  Hongseok Yang,et al.  'Cause I'm strong enough: Reasoning about consistency choices in distributed systems , 2016, POPL.

[37]  Patrick Lam,et al.  SATCheck: SAT-directed stateless model checking for SC and TSO , 2015, OOPSLA.