paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Robustness Verification for Checking Crash Consistency of Non-volatile Memory

非易失性内存崩溃一致性检查的鲁棒性验证
ASPLOS Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 12025匹配度 4/10 · 该论文属于程序验证与静态/符号分析方向,使用 SMT 与 DPLL(T),与用户对形式化验证和工程实现的兴趣有一般性关联;但其研究对象是 NVM 崩溃一致性,不涉及 LLM/Agent、ML 系统、浮点程序分析或贝叶斯程序分析,因此未命中当前研究核心问题。引用 2 inbox
Zhilei Han, Fei He
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:提出全自动鲁棒性验证工具 PMVerify,用符号编码、SMT 与 DPLL(T) 检测 NVM 程序的崩溃一致性缺陷。

非易失性内存(NVM)虽然能保证系统故障后的数据持久性,但其写提交顺序较弱,开发者需额外执行 flush 操作,导致崩溃一致性检查容易出错。现有方法多基于测试并依赖用户引导。本文提出一种全自动的 robustness 验证方法:观察到给定崩溃前执行下崩溃后非易失状态的可达性,可归约为带额外顺序约束的崩溃前执行的有效性。作者设计基于搜索的验证算法,探索所有部分执行与状态,检查是否存在某崩溃前执行下可达的非易失状态,并在内存一致性模型下进一步确认其可达性。该方法在原型工具 PMVerify 中实现,利用程序的符号编码和 SMT 求解器高效探索执行与状态,并集成到 DPLL(T) 框架中优化检查。在 PMDK 基准上的实验表明,PMVerify 在鲁棒性违反检测方面与最先进的动态工具 PSan 具有竞争力。

问题
NVM 的弱写顺序使崩溃一致性难以保证,现有检查方法多为测试驱动且依赖用户引导,缺乏全自动验证手段。
方法
将崩溃后非易失状态可达性归约为带额外顺序约束的崩溃前执行有效性,采用基于搜索的算法探索部分执行与状态,并结合符号编码、SMT 求解与 DPLL(T) 优化鲁棒性检查。
评估
实现原型工具 PMVerify,在 PMDK 示例基准上与最先进动态工具 PSan 对比,显示其在鲁棒性违反检测方面具有竞争力。
原文摘要(Abstract)

The emerging non-volatile memory (NVM) technologies provide competitive performance with DRAM and ensure data persistence in the event of system failure. However, it exhibits weak behaviour in terms of the order in which stores are committed to NVMs, and therefore requires extra efforts from developers to flush pending writes. To ensure correctness of this error-prone task, it is crucial to develop a rigid method to check crash consistency of programs running on NVM devices. Most existing solutions are testing-based and rely on user guidance to dynamically detect such deficiencies. In this paper, we present a fully automated method to verify robustness, a newly established property for ensuring crash consistency of such programs. The method is based on the observation that, reachability of a post-crash non-volatile state under a given pre-crash execution can be reduced to validity of the pre-crash execution with additional ordering constraints. Our robustness verification algorithm employs a search-based framework to explore all partial executions and states, and checks if any non-volatile state is reachable under certain pre-crash execution. Once a reachable non-volatile state is obtained, we further check its reachability under memory consistency model. The algorithm is implemented in a prototype tool PMVerify that leverages symbolic encoding of the program and utilizes an SMT solver to efficiently explore all executions and states. The method is integrated into the DPLL(T) framework to optimize the robustness checking algorithm. Experiments on the PMDK example benchmark show that PMVerify is competitive with the state-of-the-art dynamic tool, PSan, in terms of robustness violation detection.

链接与引用

DOI 原文 · PDF(开放获取) · DBLP

BibTeX
@inproceedings{Han025,
  title = {Robustness Verification for Checking Crash Consistency of Non-volatile Memory},
  author = {Zhilei Han and Fei He},
  booktitle = {ASPLOS},
  year = {2025},
  doi = {10.1145/3669940.3707269}
}