Nonvolatile Memory (NVM) technologies offer new avenues for building high-performance and crash-consistent applications by combining byte-addressable DRAM-like characteristics with non-volatility. However, these features introduce complex challenges in ensuring data consistency, especially under concurrent access scenarios.
This paper introduces PRD, a specialized tool designed to detect persistency races - specific type of concurrency bugs in PM environments that can lead to critical inconsistencies following system failures.
PRD utilizes graph-theoretical analysis along with happens-before and program-dependence analysis to map causal relationships and dependencies among program operations. While these analyses are well-established techniques in data-race detection, PRD efficiently generalizes across multiple thread interleavings to detect potential races within a single program execution, significantly enhancing the speed and efficiency of race detection in NVM environments.