paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Verifying observational robustness against a c11-style memory model

针对 C11 风格内存模型验证观测鲁棒性
POPL 5(POPL)2021匹配度 2/10 · 该论文属于并发程序验证与 C11 内存模型下的鲁棒性分析,与用户核心关注的 AI×PL 交叉、LLM/Agent 改进静态分析/形式化验证、浮点程序分析或贝叶斯程序分析均无直接关联。引用 21 inbox
Roy Margalit, Ori Lahav
crossref: 2026-09-10

AI 速览

一句话:提出观测鲁棒性,将 C11 风格内存模型下的并发程序鲁棒性验证归约为顺序一致性下的可达性问题。

包含 relaxed 访问以及 release/acquire 访问与栅栏的 C11 风格内存模型,其弱内存行为使并发程序验证十分困难。本文研究该模型下的鲁棒性验证:判断程序在弱内存模型下的行为是否与顺序一致(SC)语义一致。作者证明该问题可归约为 SC 下的标准可达性问题,从而复用成熟的验证技术。针对已有鲁棒性概念无法处理序列锁等使用推测读的程序,论文提出新的“观测鲁棒性”性质并给出可靠的检查方法。作者实现了原型工具并应用于多个具有挑战性的并发算法,是首个面向包含 relaxed 访问与 release/acquire 栅栏的并发模型的鲁棒性验证方法。

问题
如何验证使用 relaxed 访问以及 release/acquire 访问与栅栏的并发程序相对于 C11 风格内存模型是否鲁棒,即其弱内存行为是否与顺序一致语义一致。
方法
将鲁棒性验证归约为顺序一致性下的标准可达性问题,并提出新的“观测鲁棒性”性质以覆盖序列锁等使用推测读的程序,进而给出可靠的检查方法。
评估
实现原型工具并应用于若干具有挑战性的并发算法,展示了该方法的适用性。
原文摘要(Abstract)

We study the problem of verifying the robustness of concurrent programs against a C11-style memory model that includes relaxed accesses and release/acquire accesses and fences, and show that this verification problem can be reduced to a standard reachability problem under sequential consistency. We further observe that existing robustness notions do not allow the verification of programs that use speculative reads as in the sequence lock mechanism, and introduce a novel "observational robustness" property that fills this gap. In turn, we show how to soundly check for observational robustness. We have implemented our method and applied it to several challenging concurrent algorithms, demonstrating the applicability of our approach. To the best of our knowledge, this is the first method for verifying robustness against a programming language concurrency model that includes relaxed accesses and release/acquire fences.

链接与引用

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

BibTeX
@article{paperbot1164,
  title = {Verifying observational robustness against a c11-style memory model},
  author = {Roy Margalit and Ori Lahav},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {5},
  number = {POPL},
  year = {2021},
  doi = {10.1145/3434285}
}