È stato identificato un bug nel kernel Linux che causa il malfunzionamento di alcuni programmi che utilizzano AVX

Nel kernel Linux dalla versione 5.2, si manifesta Un errore che causa la violazione del contenuto del registro AVX quando viene restituito da un gestore di segnale gestito quando viene generata un'eccezione (page-fault). Il problema si verifica quando si eseguono programmi multi-thread ("-pthread") che implicano calcoli con il registro AVX, se il kernel è integrato in GCC 9 (se integrato in versioni precedenti di GCC, l'errore non appare, poiché GCC 9 memorizza nella cache l'indirizzo della variabile locale del thread nel registro e le versioni precedenti di GCC la caricano ogni volta).

Il problema fa sì che il programma venga terminato prematuramente con un errore di danneggiamento della memoria. La manifestazione più evidente e frequentemente osservata dell'errore acciaio si blocca applicazioni, scritto nella lingua Go. A causa del problema segnalato, i programmi Go terminano prematuramente, di solito con gli errori “errore di runtime: indirizzo di memoria non valido o dereferenziazione puntatore pari a zero”, “runtime: PC restituito inaspettato” e “violazione della segmentazione”. Il bug nel kernel rimane non risolto. Si sta valutando la possibilità aggiunta di modifiche al runtime del linguaggio Go per aggirare selettivamente gli errori sui kernel Linux problematici, al costo di un sovraccarico aggiuntivo.

Fonte: opennet.ru

Aggiungi un commento