paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Understanding Real-World Concurrency Bugs in Go

理解 Go 语言中的真实世界并发缺陷
ASPLOS Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems2019匹配度 2/10 · 该论文是 Go 并发缺陷的实证研究与检测工具评估,属于程序分析与软件工程范畴,但未涉及用户核心关注的 LLM/Agent 与静态分析交叉、浮点程序分析或贝叶斯程序分析,因此匹配度较低。引用 78 inbox
Tengfei Tu, Xiaoyu Liu, Linhai Song, Yiying Zhang
crossref: 2026-09-12

AI 速览

一句话:首次系统研究真实 Go 程序中的并发缺陷,揭示过半缺陷源于 Go 特有机制,并评估修复与检测工具。

Go 倡导以消息传递进行线程间通信,但其新并发机制对程序错误的影响尚缺乏实证理解。本文首次系统研究真实 Go 程序中的并发缺陷,选取 Docker、Kubernetes、gRPC 等六个流行项目,共分析 171 个并发缺陷。结果显示超过一半缺陷由 Go 特有的非传统问题导致;作者还考察了这些缺陷的修复方式,通过实验复现缺陷,并用两个公开可用的 Go 缺陷检测器进行评估。该研究加深了对 Go 并发模型的理解,为编写更可靠 Go 软件及开发调试诊断工具提供了指导。

问题
论文要回答:Go 的消息传递等新并发机制在实际软件中会引发哪些并发缺陷,其根因和修复方式与共享内存同步相比有何特点;此前缺乏针对 Go 并发缺陷的系统研究。
方法
作者收集并人工分析 Docker、Kubernetes、gRPC 等六个流行 Go 项目中的 171 个并发缺陷,分类根因、检查修复,并实验复现,再用两个公开 Go 缺陷检测器进行评测。
评估
通过缺陷分类统计、复现实验和两个公开检测器的评测,发现超过一半缺陷由 Go 特有机制导致,并据此总结对工具与编程实践的启示。
原文摘要(Abstract)

Go is a statically-typed programming language that aims to provide a simple, efficient, and safe way to build multi-threaded software. Since its creation in 2009, Go has matured and gained significant adoption in production and open-source software. Go advocates for the usage of message passing as the means of inter-thread communication and provides several new concurrency mechanisms and libraries to ease multi-threading programming. It is important to understand the implication of these new proposals and the comparison of message passing and shared memory synchronization in terms of program errors, or bugs. Unfortunately, as far as we know, there has been no study on Go's concurrency bugs. In this paper, we perform the first systematic study on concurrency bugs in real Go programs. We studied six popular Go software including Docker, Kubernetes, and gRPC. We analyzed 171 concurrency bugs in total, with more than half of them caused by non-traditional, Go-specific problems. Apart from root causes of these bugs, we also studied their fixes, performed experiments to reproduce them, and evaluated them with two publicly-available Go bug detectors. Overall, our study provides a better understanding on Go's concurrency models and can guide future researchers and practitioners in writing better, more reliable Go software and in developing debugging and diagnosis tools for Go.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot4856,
  title = {Understanding Real-World Concurrency Bugs in Go},
  author = {Tengfei Tu and Xiaoyu Liu and Linhai Song and Yiying Zhang},
  booktitle = {ASPLOS},
  year = {2019},
  doi = {10.1145/3297858.3304069}
}