TLDR Dev · ARTICLES & TUTORIALS
HOW WE FOUND A BUG IN GO'S ARM64 COMPILER
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.