paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Decoupling lock-free data structures from memory reclamation for static analysis

将无锁数据结构与内存回收解耦以进行静态分析
POPL 3(POPL)2019匹配度 3/10 · 该论文属于并发数据结构与内存回收的程序验证/静态分析,与用户核心关注的 LLM/Agent 与静态分析交叉、浮点程序分析、贝叶斯程序分析等方向无直接关联;仅可作为广义形式化验证方法参考。引用 12 inbox
Roland Meyer, Sebastian Wolff
crossref: 2026-09-10

AI 速览

一句话:提出将无锁数据结构验证与内存回收解耦的静态分析方法,实现 Michael&Scott 和 DGLM 队列的全自动线性一致性验证。

并发数据结构的验证是软件验证中最具挑战性的任务之一。无垃圾回收时,无锁内存管理(如 hazard pointers、epoch-based reclamation)与数据结构本身交织,使自动化验证难以适用。本文提出将并发数据结构与其内存管理的验证解耦:第一个验证任务对内存管理的回收行为建立过近似;第二个任务利用该过近似验证数据结构,而无需考虑内存管理的具体实现。作者进一步证明,为实现自动化验证,只需考虑单个内存位置被重用的执行。该方法已实现,并成功全自动验证了 Michael&Scott 队列和 DGLM 队列在 hazard pointers 与 epoch-based reclamation 下的线性一致性;据作者所知,这是首次实现此类实现的完全自动验证。

问题
并发数据结构的自动化验证因无锁内存管理带来的复杂性而十分困难,在缺乏垃圾回收时尤为突出。
方法
将验证分为两个更简单的任务:先过近似内存管理的回收行为,再在此过近似下验证数据结构本身;并证明自动化验证只需考虑单个内存位置被重用的执行。
评估
实现该方法并全自动验证了 Michael&Scott 队列和 DGLM 队列在 hazard pointers 与 epoch-based reclamation 下的线性一致性。
原文摘要(Abstract)

Verification of concurrent data structures is one of the most challenging tasks in software verification. The topic has received considerable attention over the course of the last decade. Nevertheless, human-driven techniques remain cumbersome and notoriously difficult while automated approaches suffer from limited applicability. The main obstacle for automation is the complexity of concurrent data structures. This is particularly true in the absence of garbage collection. The intricacy of lock-free memory management paired with the complexity of concurrent data structures makes automated verification prohibitive. In this work we present a method for verifying concurrent data structures and their memory management separately. We suggest two simpler verification tasks that imply the correctness of the data structure. The first task establishes an over-approximation of the reclamation behavior of the memory management. The second task exploits this over-approximation to verify the data structure without the need to consider the implementation of the memory management itself. To make the resulting verification tasks tractable for automated techniques, we establish a second result. We show that a verification tool needs to consider only executions where a single memory location is reused. We implemented our approach and were able to verify linearizability of Michael&Scott's queue and the DGLM queue for both hazard pointers and epoch-based reclamation. To the best of our knowledge, we are the first to verify such implementations fully automatically.

链接与引用

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

BibTeX
@article{paperbot671,
  title = {Decoupling lock-free data structures from memory reclamation for static analysis},
  author = {Roland Meyer and Sebastian Wolff},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3290371}
}