Dynamic Robustness Verification Against Weak Memory (Extended Version)
Roy Margalit, Michalis Kokologiannakis, Shachar Itzhaky, Ori Lahav
TL;DR
This work tackles the observer effect in dynamic data-race detection under weak memory by introducing dynamic robustness verification against weak memory models, specifically RC20/C11. It develops Location Clocks (LCs) to track per-location views and integrates a robustness verifier with a race detector, yielding a practical tool (RSAN) built on TSan. The approach provides a sound and complete dynamic method for detecting non-robust behaviors, supports RMWs and RC20 semantics, and demonstrates scalability on real-world code with meaningful overhead reductions compared to exhaustive static techniques. RSAN enables developers to identify and repair weak-memory-induced robustness violations with targeted fences or access-strengthening, improving portability and performance without requiring deep expertise in weak memory semantics.
Abstract
Dynamic race detection is a highly effective runtime verification technique for identifying data races by instrumenting and monitoring concurrent program runs. However, standard dynamic race detection is incompatible with practical weak memory models; the added instrumentation introduces extra synchronization, which masks weakly consistent behaviors and inherently misses certain data races. In response, we propose to dynamically verify program robustness-a property ensuring that a program exhibits only strongly consistent behaviors. Building on an existing static decision procedures, we develop an algorithm for dynamic robustness verification under a C11-style memory model. The algorithm is based on "location clocks", a variant of vector clocks used in standard race detection. It allows effective and easy-to-apply defense against weak memory on a per-program basis, which can be combined with race detection that assumes strong consistency. We implement our algorithm in a tool, called RSAN, and evaluate it across various settings. To our knowledge, this work is the first to propose and develop dynamic verification of robustness against weak memory models.
