,
José Fragoso Santos
,
Rodrigo Rodrigues
,
Miguel Matos
Creative Commons Attribution 4.0 International license
Persistent Memory offers byte-addressable persistence but exposes developers to new concurrency bugs - persistency-induced races - where a thread might read unpersisted data, potentially leading to inconsistencies after crashes. Existing tools face important practical limitations: they either require exhaustive exploration of thread interleavings, depend on application-specific semantics or specialized testing drivers, or report many interleavings that do not correspond to real persistency-induced races. This paper introduces a hybrid approach for detecting persistency-induced races that overcomes these limitations. Our method operates without application-specific knowledge and does not require observing the exact racy interleaving during testing. Instead, by precisely extending the detection window around persistent memory accesses, we can infer the existence of racy interleavings whenever conflicting executions are observed. Our evaluation across multiple applications found 26 bugs (7 new) demonstrating that our approach provides a principled and practical foundation for detecting persistency-induced races.
@InProceedings{goncalves_et_al:LIPIcs.ECOOP.2026.9,
author = {Gon\c{c}alves, Jo\~{a}o and Fragoso Santos, Jos\'{e} and Rodrigues, Rodrigo and Matos, Miguel},
title = {{Vardalith: Hybrid Detection of Persistent Memory Concurrency Bugs}},
booktitle = {40th European Conference on Object-Oriented Programming (ECOOP 2026)},
pages = {9:1--9:34},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-423-9},
ISSN = {1868-8969},
year = {2026},
volume = {372},
editor = {Krebbers, Robbert and Silva, Alexandra},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2026.9},
URN = {urn:nbn:de:0030-drops-261052},
doi = {10.4230/LIPIcs.ECOOP.2026.9},
annote = {Keywords: persistent memory, concurrency, crash consistency}
}
archived version
archived version