paperbot · PL 论文追踪

全部论文 待读 收藏

P2 GoPV: A Static Analyzer for Finding Blocking Concurrency Bugs Due to Misuse of Shared-Memory Synchronization in Go

GoPV:一种用于发现 Go 中因共享内存同步误用导致的阻塞并发缺陷的静态分析器
ISSTA Proceedings of the 34th ACM SIGSOFT International Symposium on Software Testing and Analysis2025匹配度 4/10 · 论文属于静态分析技术(调用图/支配者分析)检测 Go 并发同步阻塞缺陷,与用户感兴趣的静态分析技术栈有方法层面的间接关联,但既未面向 ML/Agentic 程序,也未与 LLM 或浮点/贝叶斯程序分析交叉,研究目标与画像主线不符。引用 0 inbox
Xiaofan Xu, Wei Song, Jeff Huang
crossref: 2026-09-12

AI 速览

一句话:GoPV 静态分析器基于调用图与(后)支配者分析,检测 Go 程序中共享内存同步误用导致的阻塞并发缺陷。

Go 程序中共享内存同步原语(如互斥锁)的误用会导致阻塞并发缺陷,这类缺陷难以静态检测。GoPV 基于调用图与控制流图进行并发分析以及(后)支配者分析,从而发现潜在的此类缺陷。实验表明,GoPV 在八个基准程序上检测出了所有与共享内存同步相关的阻塞并发缺陷;此外,在 2.78 小时内从 21 个大型 Go 应用中发现了 17 个此类缺陷,验证了其有效性与效率。

问题
Go 程序中共享内存同步原语(如互斥锁)的误用会导致阻塞并发缺陷,这类缺陷在大型 Go 应用中难以通过现有静态分析工具有效检测。
方法
GoPV 基于调用图和控制流图进行并发分析与(后)支配者分析,以检测潜在的阻塞并发缺陷。
评估
在八个基准程序上检测出全部与共享内存同步相关的阻塞并发缺陷;并在 2.78 小时内于 21 个大型 Go 应用中发现了 17 个此类缺陷,证明了有效性和效率。
原文摘要(Abstract)

GoPV is a static analyzer for detecting blocking concurrency bugs due to misuse of shared-memory synchronization primitive in Go. It performs concurrency analysis and (post-)dominator analysis based on call graph and control flow graphs to detect potential concurrency bugs in Go programs. The experimental results show that GoPV detects all blocking concurrency bugs related to shared-memory synchronization on eight benchmark programs. In addition, GoPV uncovers 17 such bugs in 21 large Go applications within 2.78 hours, demonstrating its effectiveness and efficiency.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot9597,
  title = {GoPV: A Static Analyzer for Finding Blocking Concurrency Bugs Due to Misuse of Shared-Memory Synchronization in Go},
  author = {Xiaofan Xu and Wei Song and Jeff Huang},
  booktitle = {ISSTA},
  year = {2025},
  doi = {10.1145/3713081.3731734}
}