ISSTA2025

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

Xiaofan Xu, Wei Song, Jeff Huang

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.