Im Linux-Kernel, beginnend mit 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 Erzeugung einer Ausnahme (page-fault) verarbeitet wird. Das Problem tritt beim Ausführen von Multithread-Programmen ("-pthread") auf, die Berechnungen mit dem AVX-Register enthalten, wenn der Kernel mit GCC 9 kompiliert wird (bei der Kompilierung mit früheren Versionen von GCC tritt der Fehler nicht auf, da GCC 9 die Adresse der thread-lokalen Variable im Register cached, während frühere Versionen von GCC sie bei jedem Zugriff laden).
Das Problem führt zu einem vorzeitigen Programmabbruch mit einem Speicherbeschädigungsfehler. Die auffälligste und häufigste Manifestation des Fehlers , die in Go-Programmen auftritt. Aufgrund des genannten Problems beenden Go-Programme normalerweise vorzeitig mit den Fehlern „runtime error: invalid memory address or nil pointer dereference“, „runtime: unexpected return pc“ und „segmentation violation“. Im Kernel bleibt der Fehler derzeit ungelöst. in Betracht gezogen, Änderungen im Go-Runtime vorzunehmen, um den Fehler auf den problematischen Linux-Kernels selektiv zu umgehen, was zusätzliche Overheadkosten mit sich bringen würde.
Quelle: opennet.ru
