Nel kernel Linux, a partire dalla versione 5.2, un errore che porta a una corruzione del contenuto del registro AVX durante il ritorno da un gestore di segnali che viene eseguito in caso di generazione di un'eccezione (page-fault). Il problema si verifica quando vengono eseguiti programmi multithreading («-pthread») che contengono calcoli con il registro AVX, nel caso di compilazione del kernel con GCC 9 (con compilazioni in versioni precedenti di GCC l'errore non si manifesta, poiché GCC 9 memorizza nella cache l'indirizzo della variabile thread-local nel registro, mentre le versioni precedenti di GCC lo caricano ogni volta).
Il problema porta a un termine anticipato del programma con un errore di corruzione della memoria. L'aspetto più evidente e frequentemente osservato dell'errore , scritte in linguaggio Go. A causa del problema evidenziato, i programmi in linguaggio Go terminano prematuramente, generalmente con errori «runtime error: invalid memory address or nil pointer dereference», «runtime: unexpected return pc» e «segmentation violation». Nel kernel l'errore rimane ancora non risolto. di aggiungere al runtime del linguaggio Go modifiche per bypassare selettivamente l'errore su alcuni kernel Linux problematici, a costo di un aumento delle sovraccariche.
Fonte: opennet.ru
