A study of real-world data races in Golang
Milind Chabbi, Murali Krishna Ramanathan
Abstract
The concurrent programming literature is rich with tools and techniques for data race detection. Less, however, has been known about real-world, industry-scale deployment, experience, and insights about data races. Golang (Go for short) is a modern programming language that makes concurrency a first-class citizen. Go offers both message passing and shared memory for communicating among concurrent threads. Go is gaining popularity in modern microservice-based systems. Data races in Go stand in the face of its emerging popularity.
In this paper, using our industrial codebase as an example, we demonstrate that Go developers embrace concurrency and show how the abundance of concurrency alongside language idioms and nuances make Go programs highly susceptible to data races. Google's Go distribution ships with a built-in dynamic data race detector based on ThreadSanitizer. However, dynamic race detectors pose scalability and flakiness challenges; we discuss various software engineering trade-offs to make this detector work effectively at scale. We have deployed this detector in Uber's 46 million lines of Go codebase hosting 2100 distinct microservices, found over 2000 data races, and fixed over 1000 data races, spanning 790 distinct code patches submitted by 210 unique developers over a six-month period. Based on a detailed investigation of these data race patterns in Go, we make seven high-level observations relating to the complex interplay between the Go language paradigm and data races.
• Software and its engineering → Parallel programming languages; Concurrent programming languages; Software verification and validation; • Computing methodologies → Concurrent programming languages.
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.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext 65bfb808-cd04-4435-81b6-2cd335978dabCited by top-tier papers8
- Peahen: fast and precise static deadlock detection via context reductionYuandao Cai, Chengfeng Ye, Qingkai Shi, Charles ZhangFSE 2022 · 16 citations
- μManycore: A Cloud-Native CPU for Tail at ScaleJovan Stojkovic, Chunao Liu, Muhammad Shahbaz, Josep TorrellasISCA 2023 · 16 citations
- SkeletonHunter: Diagnosing and Localizing Network Failures in Containerized Large Model TrainingWei Liu, Kun Qian, Zhenhua Li, Tianyin Xu et al.SIGCOMM 2025 · 8 citations
- Optimistic Prediction of Synchronization-Reversal Data RacesZheng Shi, Umang Mathur, Andreas PavlogiannisICSE 2024 · 8 citations
- HardHarvest: Hardware-Supported Core Harvesting for MicroservicesJovan Stojkovic, Chunao Liu, Muhammad Shahbaz, Josep TorrellasISCA 2025 · 4 citations
Builds on1
Related papers
- DR.FIX: Automatically Fixing Data Races at Industry ScaleFarnaz Behrang, Zhizhou Zhang, Georgian-Vlad Saioc, Peng Liu et al.PLDI 2025 · 1 citation
- Who goes first? detecting go concurrency bugs via message reorderingZiheng Liu, Shihao Xia, Yu Liang, Linhai Song et al.ASPLOS 2022 · 21 citations
- Automatically detecting and fixing concurrency bugs in go software systemsZiheng Liu, Shuofei Zhu, Boqin Qin, Hao Chen et al.ASPLOS 2021 · 32 citations
- Dynamic Partial Deadlock Detection and Recovery via Garbage CollectionGeorgian-Vlad Saioc, I-Ting Angelina Lee, Anders Møller, Milind ChabbiASPLOS 2025 · 3 citations
- GoPV: Detecting Blocking Concurrency Bugs Related to Shared-Memory Synchronization in GoWei Song, Xiaofan Xu, Jeff HuangISSTA 2025
