TLDR Dev · ARTICLES & TUTORIALS

HOW WE FOUND A BUG IN GO'S ARM64 COMPILER

blog.cloudflare.com10 min read

Summary from the TLDR Dev newsletter

Cloudflare discovered a race condition bug in Go's arm64 compiler due to high traffic volume. The bug caused sporadic panics on arm64 machines related to stack unwinding, which were initially thought to be rare stack memory corruption. Through deep investigation and debugging, it was found that async preemption during stack pointer adjustments in the `(*NetlinkSocket).Receive` function led to an invalid stack pointer during garbage collection, causing the unwinder to crash.