Im Linux-Kernel, beginnend mit der Version 5.2, tritt ein Fehler auf, der zu einer Beschädigung des AVX-Registers beim Rückkehr aus einem Signal-Handler führt, der bei der Ausnahmebehandlung (page-fault) verarbeitet wird. Das Problem tritt beim Ausführen von Multithread-Anwendungen („-pthread“) auf, die Berechnungen mit dem AVX-Register durchführen, wenn der Kernel mit GCC 9 kompiliert wird (bei der Kompilierung mit früheren GCC-Versionen zeigt der Fehler sich nicht, da GCC 9 die Adresse der thread-local-Variablen im Register cached, während frühere Versionen von GCC sie jedes Mal laden).
Das Problem führt zu einem vorzeitigen Programmabbruch mit einem Fehler, der auf einen Speicherfehler hinweist. Das auffälligste und häufigste Auftreten des Fehlers , die in Go geschrieben sind. Aufgrund des genannten Problems brechen Go-Programme in der Regel vorzeitig mit den Fehlern „runtime error: invalid memory address or nil pointer dereference“, „runtime: unexpected return pc“ und „segmentation violation“ ab. Im Kernel bleibt der Fehler bisher ungelöst. prüft, Änderungen im Go-Laufzeitumgebung hinzuzufügen, um den Fehler in betroffenen Linux-Kernen selektiv zu umgehen, was allerdings zusätzliche Overheadkosten mit sich bringt.
Quelle: opennet.ru
