paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Automated Verification of Go Programs via Bounded Model Checking

基于有界模型检测的 Go 程序自动验证
ASE 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)2021匹配度 3/10 · 论文是 Go 并发程序的有界模型检测静态验证,属于程序验证/静态分析方向,但未涉及 LLM/Agent、机器学习系统、浮点程序分析或贝叶斯程序分析,与画像的核心交叉方向不匹配。只能作为通用 PL/验证方法参考,而非当前重点追踪的问题。引用 22 inbox
Nicolas Dilley, Julien Lange
crossref: 2026-09-12

AI 速览

一句话:提出基于有界模型检测的 Go 并发程序静态检查器,可处理大型代码库与静态未知参数,性能优于现有工具。

Go 语言提供 channel、waitgroup、mutex 等轻量线程协调原语,容易引入并发缺陷;而现有静态检查器要么漏报过多,要么无法处理大型程序。本文提出一种 Go 程序静态检查器,核心思想是将程序的并发行为抽取为模型,并对其进行有界模型检测。与已有工作不同,该方法能应对大型代码库、支持含静态未知参数的程序,并可扩展至更多并发原语。论文详细给出了从 Go 程序到模型的抽取算法、针对静态未知参数的自动检查算法,并进行了大规模实验评估,结果表明该方法优于当前最先进工具。

问题
如何对使用 channel、waitgroup、mutex 等并发原语的 Go 程序进行自动静态检查,在保证较少漏报的同时处理大型代码库。
方法
将 Go 程序抽取为并发行为模型,并对其执行有界模型检测;同时提出处理静态未知参数的自动检查算法,且框架可扩展至新的并发原语。
评估
通过大规模实验评估该方法,并与当前最先进工具进行对比,结果显示其性能更优。
原文摘要(Abstract)

The Go programming language offers a wide range of primitives to coordinate lightweight threads, e.g., channels, waitgroups, and mutexes — all of which may cause concurrency bugs. Static checkers that guarantee the absence of bugs are essential to help programmers avoid these costly errors before their code is executed. However existing tools either miss too many bugs or cannot handle large programs. To address these limitations, we propose a static checker for Go programs which relies on performing bounded model checking of their concurrent behaviours. In contrast to previous works, our approach deals with large codebases, supports programs that have statically unknown parameters, and is extensible to additional concurrency primitives. Our work includes a detailed presentation of the extraction algorithm from Go programs to models, an algorithm to automatically check programs with statically unknown parameters, and a large scale evaluation of our approach. The latter shows that our approach outperforms the state-of-the-art.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot6493,
  title = {Automated Verification of Go Programs via Bounded Model Checking},
  author = {Nicolas Dilley and Julien Lange},
  booktitle = {ASE},
  year = {2021},
  doi = {10.1109/ase51524.2021.9678571}
}