Охота на баг в рантайме Go на 32-битных встраиваемых системах

Hunting Down a Go Runtime Bug on 32-Bit Embedded Systems

Охота на баг в рантайме Go на 32-битных встраиваемых системах

Инженеры sigma-star нашли и исправили давний баг в рантайме Go, из-за которого приложения периодически падали на 32-битных ARM и i386 системах. Проблема была в netpoll: на little-endian системах хранение сырого указателя на eventfd в поле ev.Data приводило к конфликту с тегом fdseq, из-за чего сокет ошибочно принимался за eventfd. Баг проявлялся только в долго работающих программах после миллионов переиспользований pollDesc. Исправление, заменяющее сырой указатель на tagged nil pollDesc, уже вмержено в Go.

Мы можем только предполагать, но это говорит о том, что Google больше не запускает 32-битные программы на Go. Иначе они бы наткнулись на этот баг задолго до нас.

Ещё за этот день

2026-08-29