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

Go-Runtime-Bug auf 32-Bit-Systemen: Ein Aliasing-Problem, das nur bei langlaufenden Programmen zuschlägt

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.
  1. dlopes7

    Sehr interessanter Artikel – solche Bugs, die erst nach langer Laufzeit in der Produktion auftreten, sind am schwierigsten zu diagnostizieren.

  2. nasretdinov

    Go wurde in der 64-Bit-Ära geboren; ich erinnere mich, dass ich viele mehr Bugs gesehen habe, die nur auf 32-Bit-Systemen auftreten. Ich bin mir ziemlich sicher, dass die Beobachtung im Artikel korrekt ist, dass niemand bei Google Go auf etwas anderem als 64-Bit-ARM/x86-Linux testet.

  3. ReactiveJelly

    Hätte also ein stärkeres Typsystem an der Grenze zwischen Go und Linux das abgefangen?

Mehr von diesem Tag

2026-08-29