Asynchronous Wait-Free Runtime Verification and Enforcement of Linearizability
Armando Castañeda, Gilde Valeria Rodríguez
TL;DR
This paper tackles the problem of runtime verification of linearizability in fully asynchronous wait-free shared-memory systems and proves a general impossibility for direct verification on common objects. It then introduces a predictive verification route through the class DRV by transforming any implementation A into a DRV-compatible A* that produces a sketch of its execution via views, enabling predictive checks using only read/write objects. It further shows that GenLin objects (including linearizability and its generalizations) admit self-enforced implementations that produce verifiable histories, allowing modular design with forensic guarantees. The approach yields a simple, generic methodology for instrumenting concurrent objects to be self-verifiable at runtime without requiring consensus, with broad implications for modular, accountable system design and potential extensions to other correctness conditions and computation models.
Abstract
This paper presents a {theoretical study} of the problem of verifying linearizability at runtime, where one seeks for a concurrent algorithm for verifying that the current execution of a given concurrent shared object implementation is linearizable. It shows that it is impossible to runtime verify linearizability for some common sequential objects, regardless of the consensus power of base objects. Then, it argues that a variant of the problem, which we call predictive verification, can be solved, if linearizability is verified indirectly. Namely, it shows that (1) linearizability of a class of concurrent implementations can be predictively verified using only read/write base objects (i.e. without the need of consensus), and (2) any implementation can be transformed to its counterpart in the class using only read/write objects. As far as we know, this is the first runtime verification algorithm for any correctness condition that is fully asynchronous and fault-tolerant. As a by-product, it is obtained a simple and generic methodology for deriving linearizable implementations that runtime verify their responses, and are able to produce a history certifying this, properties that allows the design of concurrent systems in a modular manner with accountable and forensic guarantees. We call such implementations self-enforced linearizable. The results hold not only for linearizability but for a correctness condition that includes generalizations of it such as set-linearizability and interval-linearizability.
