Go-Runtime-Bug auf 32-Bit-Systemen: Ein Aliasing-Problem, das nur bei langlaufenden Programmen zuschlägt
Hunting Down a Go Runtime Bug on 32-Bit Embedded Systems

Ein Kunde meldete sporadische Abstürze einer Go-Anwendung auf einem 32-Bit-ARM-Einbettungssystem. Der Fehler 'netpoll: eventfd ready for something unexpected' führte das Team von sigma-star auf eine Spur, die tief in die Go-Runtime führte. Die Ursache: Auf 32-Bit-Little-Endian-Systemen kollidiert die Adresse des internen eventfd mit dem Tag-Zähler für Socket-Objekte. Erst nach Millionen von Zyklen führt das zum Crash. Der Beitrag erklärt die Analyse, einen reproduzierbaren Testfall und den eingereichten Fix, der inzwischen in Go gemerged wurde.
Wir können nur spekulieren, aber das deutet darauf hin, dass Google selbst keine 32-Bit-Go-Programme mehr ausführt – sonst wären sie selbst längst auf den Bug gestoßen.