How we found a bug in Go's arm64 compiler
Oct 8, 2025Thea Heinen

Summary
This post details Cloudflare's discovery and resolution of a race condition bug in Go's arm64 compiler. The bug, identified through extensive monitoring of their global network, caused sporadic panics and segmentation faults during stack unwinding. Cloudflare's investigation traced the issue to the interaction between Go's asynchronous preemption mechanism and the `github.com/vishvananda/netlink` library, leading to the identification of a specific bug in the Go compiler's generated code for arm64. Cloudflare's contribution involved deep debugging, correlation with existing Go issues, and ultimately driving towards a root cause analysis that benefits the broader Go ecosystem.
More from the Hardware Infrastructure & Performance Optimization trail
- How we reduced core unit boot time from hours to minutes
- A one-line Kubernetes fix that saved 600 hours a year
- Inside Gen 13- how we built our most powerful server yet
- Launching Cloudflare’s Gen 13 servers- trading cache for cores for 2x edge compute performance
- So long, and thanks for all the fish- how to escape the Linux networking stack