W jądrze Linux zidentyfikowano błąd, który prowadzi do zakłóceń w działaniu niektórych programów wykorzystujących AVX.

W jądrze Linux, począwszy od wersji 5.2, objawia się 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 stały się awarie aplikacji, 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. Rozważa się możliwość 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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster