From PhD research to the Go runtime

A piece of research by Georgian-Vlad Saioc, former PhD student and now software engineer at Uber, is now being integrated into the upcoming Go 1.26 release of Google’s Go programming language, used by millions of developers worldwide.

In his PhD work, Georgian-Vlad tackled a long-standing challenge in Go: partial deadlocks (also known as goroutine leaks) - situations where some goroutines become permanently blocked, silently consuming memory and resources in long-running systems.

In the paper Dynamic Partial Deadlock Detection and Recovery via Garbage Collection (ASPLOS 2025), he and co-authors I-Ting Angelina Lee, Anders Møller, and Milind Chabbi introduce a novel idea: by piggybacking on Go’s garbage collector, memory reachability can be used as a sound over-approximation of goroutine liveness. This makes it possible to detect and even recover from partial deadlocks at runtime, with negligible overhead - even in production systems.

The approach was implemented in a prototype called Golf (Goroutine Leak Fixer) and evaluated on:

  • microbenchmarks with known concurrency bugs
  • thousands of Go packages in Uber’s codebase
  • a real Uber production service, where it detected hundreds of previously hidden partial deadlocks 

We’re excited to see this work integrated into the Go toolchain, where it appears in Go 1.26 as an experimental goroutine leak profiling feature - a strong example of how fundamental research can directly improve widely used programming languages at massive scale.

Congratulations to Georgian-Vlad and collaborators - great to see Aarhus University research shaping the future of Go.