Jaaru: efficiently model checking persistent memory programs
Hamed Gorjiara, Guoqing Harry Xu, Brian Demsky
Abstract
Persistent memory (PM) technologies combine near DRAM performance with persistency and open the possibility of using one copy of a data structure as both a working copy and a persistent store of the data. Ensuring that these persistent data structures are crash consistent (i.e., power failures) is a major challenge. Stores to persistent memory are not immediately made persistent --- they initially reside in processor cache and are only written to PM when a flush occurs due to space constraints or explicit flush instructions. It is more challenging to test crash consistency for PM than for disks given the PM's byte-addressability that leads to significantly more states. We present Jaaru, a fully-automated and ultra-efficient model checker for PM programs. Key to Jaaru's efficiency is a new technique based on constraint refinement that can reduce the number of executions that must be explored by many orders of magnitude. This exploration technique effectively leverages commit stores, a common coding pattern, to reduce the model checking complexity from exponential in the length of program executions to quadratic. We have evaluated Jaaru with PMDK and RECIPE, and found 25 persistency bugs, 18 of which are new. Jaaru is also orders of magnitude more efficient than Yat, a model checker that eagerly explores all possible states.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 4ee37a64-146d-459b-9554-772d251205e6Cited by top-tier papers21
- Yashme: detecting persistency racesHamed Gorjiara, Guoqing Harry Xu, Brian DemskyASPLOS 2022 · 18 citations
- Witcher: Systematic Crash Consistency Testing for Non-Volatile Memory Key-Value StoresXinwei Fu, Wook-Hee Kim, Ajay Paddayuru Shreepathi, Mohannad Ismail et al.SOSP 2021 · 17 citations
- Efficiently detecting concurrency bugs in persistent memory programsZhangyu Chen, Yu Hua, Yongle Zhang, Luochangqi DingASPLOS 2022 · 11 citations
- Chipmunk: Investigating Crash-Consistency in Persistent-Memory File SystemsHayley LeBlanc, Shankara Pailoor, Om Saran K. R. E., Isil Dillig et al.EuroSys 2023 · 11 citations
- SafePM: a sanitizer for persistent memoryKartal Kaan Bozdogan, Dimitrios Stavrakakis, Shady Issa, Pramod BhatotiaEuroSys 2022 · 10 citations
Builds on5
- Fuzzing File Systems via Two-Dimensional Input Space ExplorationWen Xu, Hyungon Moon, Sanidhya Kashyap, Po-Ning Tseng et al.S&P 2019 · 117 citations
- Persistency semantics of the Intel-x86 architectureAzalea Raad, John Wickerson, Gil Neiger, Viktor VafeiadisPOPL 2020 · 61 citations
- Cross-Failure Bug Detection in Persistent Memory ProgramsSihang Liu, Korakit Seemakhupt, Yizhou Wei, Thomas F. Wenisch et al.ASPLOS 2020 · 60 citations
- AGAMOTTO: How Persistent is your Persistent Memory Application?Ian Neal, Ben Reeves, Ben Stoler, Andrew Quinn et al.OSDI 2020 · 43 citations
- Crafty: efficient, HTM-compatible persistent transactionsKaan Genç, Michael D. Bond, Guoqing Harry XuPLDI 2020 · 31 citations
Related papers
- PMFuzz: test case generation for persistent memory programsSihang Liu, Suyash Mahar, Baishakhi Ray, Samira Manabi KhanASPLOS 2021 · 36 citations
- Fast, flexible, and comprehensive bug detection for persistent memory programsBang Di, Jiawen Liu, Hao Chen, Dong LiASPLOS 2021 · 37 citations
- Mumak: Efficient and Black-Box Bug Detection for Persistent MemoryJoão Gonçalves, Miguel Matos, Rodrigo RodriguesEuroSys 2023 · 5 citations
- HybridPersist: A Compiler Support for User-Friendly and Efficient PM ProgrammingYiyu Zhang, Yongzhi Wang, Yanfeng Gao, Xuandong Li et al.OOPSLA 2025
- Constraint Based Program Repair for Persistent Memory BugsZunchen Huang, Chao WangICSE 2024 · 3 citations
