Nel kernel Linux, a partire dalla versione 5.2, si manifesta un errore che provoca la corruzione del contenuto del registro AVX durante il ritorno da un gestore di segnali trattato in caso di generazione di un'eccezione (page-fault). Il problema si verifica quando si eseguono programmi multi-threaded ("-pthread") che coinvolgono calcoli con il registro AVX, nel caso di una compilazione del kernel con GCC 9 (nella compilazione con versioni precedenti di GCC l'errore non si manifesta, poiché GCC 9 memorizza nella cache l'indirizzo di una variabile thread-local nel registro, mentre le versioni precedenti di GCC lo caricano ogni volta).
Il problema porta a una terminazione prematura del programma con un errore di corruzione della memoria. La manifestazione più evidente e frequentemente osservata dell'errore , scritti in linguaggio Go. A causa del problema segnalato, i programmi in linguaggio Go terminano prematuramente, di solito con errori "runtime error: invalid memory address or nil pointer dereference", "runtime: unexpected return pc" e "segmentation violation". Nel kernel l'errore rimane attualmente irrisolto. di apportare modifiche al runtime del linguaggio Go per eludere selettivamente l'errore sui kernel Linux problematici, a costo di introdurre sovraccarichi aggiuntivi.
Fonte: opennet.ru
