Static Deadlock Detection for Go
summary
A static deadlock detector that infers session types from Go source constructs a global graph of matched sends and receives and flags incompatible communications including local deadlocks that the runtime checker misses. The tool analyzes SSA form via the Go SSA package, reports likely deadlocks with possible false positives, runs on small open‑source programs (up to a few hundred lines) and is published on GitHub. Current limitations include unbuffered channels only and limited dynamic pattern support.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 1:43Concurrency is complicated
- 2:21What are concurrency bugs
- 3:27How message passing works
- 5:50Why its hard
- 6:21Control flow
- 6:51Runtime detector
- 7:42Why need a new deadlock detector
- 9:21Local deadlock
- 9:38Deadlock detector
- 11:03How it works
- 12:23Modeling concurrency
- 15:22Type checking
- 16:42Session types
- 18:11Source code to model
- 20:36Global graph
- 22:17Conclusion
related talks
20mDLOS: Effective Static Detection of Deadlocks in OS Kernels
45mEssential security checks for your Go project
17mUnderstanding Supply Chain Threats with Static Analysis
35mRecursive Read Deadlocks and Where to Find Them
15mWhat Lockdep Does and Doesn't
22mDynamic Go Instrumentation for Production Environments
43mEverything I learned about static analysis and program safety in C++
22mHigh(er) Reliability Software Patterns for Go
