A Study of Real-world Data Races in Golang
summary
Deploys Go's dynamic race detector (ThreadSanitizer via Go's -race) across a 57M‑LOC monorepo, compiling and running unit tests daily, and reports 3.5k races found in one year with ~2k fixed via ~1.2k patches by ~600 engineers; detector costs 2–20x runtime overhead and 5–10x memory, finds 10–20 new races daily, and exposes concrete, repeatable patterns: closure capture, concurrent map mutation, mixing channels with shared memory, and pointer-vs-value semantics.
AI-written summary · about
chapters (7)
- 0:00Concurrency in Go
- 2:20Data race detection
- 3:55Deploying the detector
- 6:30Real-world findings
- 7:40Common race patterns
- 14:40Conclusion and future work
- 15:40Q&A session
related talks
22mData race detection
44m"go test -race" Under the Hood
07mRace Conditions in Details
26mGo Plays Nice With Your Computer - Race Detection and Freedom!
27mParadigms of Rust for the Go Developer
01h 04mDebugging data races
19mRuntime Detection of Data Races in OCaml with ThreadSanitizer
35mGo’s Trace Tooling and Concurrency
