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
