← Latest briefing

Technology

Engineers resolve long-standing Go runtime bug affecting 32-bit embedded Linux systems

A pointer aliasing flaw introduced in Go 1.14 caused long-running programs on 32-bit architectures to crash after recycling millions of polling objects.

The short version

  • Engineers identified and patched a Go runtime bug causing sporadic netpoll crashes on 32-bit ARM and i386 Linux systems.
  • The crash was caused by pointer aliasing between event counters and pointer addresses on 32-bit little-endian systems after sequence counters reached into the millions.
  • A fix replacing raw pointers with tagged nil pointers in the netpoll logic was merged into the official Go repository.

Key facts

  • A Go runtime bug introduced in Go 1.14 in 2020 caused sporadic crashes in long-running applications on 32-bit ARM and i386 Linux systems.[Hacker News]
  • The bug resulted from address aliasing in Go's netpoll_epoll.go where lower-byte address storage overlapped with sequence counter tags on 32-bit little-endian systems.[Hacker News]
  • First reported in March 2025, the issue remained unresolved until August 2026 when engineers built a reproducible test case and submitted a patch.[Hacker News]
  • The accepted fix stores a tagged nil pollDesc for event file descriptors, eliminating the pointer overlap.[Hacker News]

Sources