Im Linux-Kernel wurde ein Fehler festgestellt, der zu Störungen bei einigen Programmen führt, die AVX verwenden.

Im Linux-Kernel, beginnend mit Version 5.2, zeigt sich 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 zu Abstürze Anwendungen, 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. Es wird die Möglichkeit 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

Erwerben Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster