W jądrze Linux, począwszy od wersji 5.2, występuje błąd, który prowadzi do uszkodzenia zawartości rejestru AVX podczas powrotu z obsługi sygnału, przetwarzanej przy generowaniu wyjątków (błąd strony). Problem pojawia się podczas uruchamiania programów wielowątkowych („-pthread”), które wykonują obliczenia z wykorzystaniem rejestru AVX, w przypadku kompilacji jądra za pomocą GCC 9 (przy kompilacji w wcześniejszych wersjach GCC błąd nie występuje, ponieważ GCC 9 buforuje adres zmiennej lokalnej w rejestrze, a wcześniejsze wersje GCC za każdym razem ładują go na nowo).
Problem prowadzi do przedwczesnego zakończenia programu z błędem usunięcia pamięci. Najbardziej zauważalnym i często obserwowanym objawem błędu , napisanych w języku Go. Z powodu wspomnianego problemu programy napisane w Go kończą się przedwcześnie, zazwyczaj z błędami „runtime error: invalid memory address or nil pointer dereference”, „runtime: unexpected return pc” oraz „segmentation violation”. W jądrze błąd na razie pozostaje nierozwiązany. dodania do runtime języka Go zmian w celu selektywnego omijania błędu na problematycznych jądrach Linux, kosztem dodatkowych narzutów.
Źródło: opennet.ru
