Dynamic Partial Deadlock Detection and Recovery via Garbage Collection
Georgian-Vlad Saioc, I-Ting Angelina Lee, Anders Møller, Milind Chabbi
Abstract
A challenge of writing concurrent message-passing programs is ensuring the absence of partial deadlocks, which can cause severe memory leaks in long-running systems. The Go programming language is particularly susceptible to this problem due to its support of message passing and ease of lightweight concurrency creation.
We propose a novel dynamic technique to detect partial deadlocks by soundly approximating liveness using the garbage collector's marking phase. The approach allows systems to not only detect, but also automatically redress partial deadlocks and alleviate their impact on memory.
We implement the approach in the tool Golf, as an extension to the garbage collector of the Go runtime system and evaluate its effectiveness in a series of experiments. Preliminary results show that the approach is effective at detecting 94% and 50% of partial deadlocks in a series of microbenchmarks and the test suites of a large-scale industrial codebase, respectively. Furthermore, we deployed Golf on a real service used by Uber, and over a period of 24 hours, effectively detected 252 partial deadlocks caused by three programming errors.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Cited by top-tier papers2
- The Complexity of Testing Message-Passing ConcurrencyZheng Shi, Lasse Møldrup, Umang Mathur, Andreas PavlogiannisPOPL 2026 · 2 citations
- DR.FIX: Automatically Fixing Data Races at Industry ScaleFarnaz Behrang, Zhizhou Zhang, Georgian-Vlad Saioc, Peng Liu et al.PLDI 2025 · 1 citation
Builds on4
- Automatically detecting and fixing concurrency bugs in go software systemsZiheng Liu, Shuofei Zhu, Boqin Qin, Hao Chen et al.ASPLOS 2021 · 32 citations
- Who goes first? detecting go concurrency bugs via message reorderingZiheng Liu, Shihao Xia, Yu Liang, Linhai Song et al.ASPLOS 2022 · 21 citations
- Automated Verification of Go Programs via Bounded Model CheckingNicolas Dilley, Julien LangeASE 2021 · 21 citations
- Detecting Blocking Errors in Go Programs using Localized Abstract InterpretationOskar Haarklou Veileborg, Georgian-Vlad Saioc, Anders MøllerASE 2022 · 12 citations
Related papers
- Automated Verification of Parametric Channel-Based Process CommunicationGeorgian-Vlad Saioc, Julien Lange, Anders MøllerOOPSLA 2024 · 2 citations
- GoPV: Detecting Blocking Concurrency Bugs Related to Shared-Memory Synchronization in GoWei Song, Xiaofan Xu, Jeff HuangISSTA 2025
- A study of real-world data races in GolangMilind Chabbi, Murali Krishna RamanathanPLDI 2022 · 34 citations
- Deadlock prediction via generalized dependencyJinpeng Zhou, Hanmei Yang, John Lange, Tongping LiuISSTA 2022 · 5 citations
- Language-Agnostic Static Deadlock Detection for FuturesStefan K. MullerPPoPP 2024 · 1 citation
