ELSEIF
Your brief EB
217 stories from 202 feeds 1255 clusters Refreshed 12 minutes ago next pull 21:14

TECH Signal 243 2 feeds carried it

Go runtime netpoll crashes on 32-bit systems from tagged pointer layout mismatch

A Go runtime bug causes intermittent fatal crashes on 32-bit ARM and i386 Linux systems because tagged and raw pointers are laid out differently in the epoll event data field, causing the netpoll mechanism to misidentify event sources.

WHY IT MATTERS

Engineers running long-lived Go applications on 32-bit embedded Linux systems face unpredictable crashes that went unfixed since March 2025. The root cause is a subtle pointer-tagging collision in the runtime's netpoll code, making it nearly impossible to diagnose without deep knowledge of Go internals.

Written by elseif from the cluster below · every claim links back to a source

The three things worth knowing

01

The crash produces 'runtime: netpoll: eventfd ready for something unexpected' when epoll returns EPOLLIN|EPOLLOUT instead of the expected EPOLLIN alone.

02

On 32-bit platforms, Go packs tagged pointers with the tag in the lower 4 bytes and the address in the upper 4 bytes, while raw pointers store the address in the lower 4 bytes with zeros above.

03

The netpoll code mixes raw and tagged pointers in the same 8-byte ev.Data field, causing the runtime to misidentify whether an event belongs to an eventfd or a socket fd.

THE CLUSTER

Same story, 2 feeds.

ORDERED BY FIRST SEEN
sigma-star.at via Lobsters Hunting Down a Go Runtime Bug on 32-bit Embedded Systems Open ↗
sigma-star.at via Hacker News Hunting Down a Go Runtime Bug on 32-Bit Embedded Systems Open ↗