Nustatyta „Linux“ branduolio klaida, dėl kurios kai kurios programos, kurios naudoja AVX, sugenda

„Linux“ branduolyje nuo 5.2 išleidimo, pasirodo Klaida, dėl kurios AVX registro turinys pažeidžiamas grįžtant iš signalų tvarkyklės, kuri apdorojama, kai pateikiama išimtis (puslapio klaida). Problema iškyla paleidžiant kelių gijų programas ("-pthread"), kurios apima skaičiavimus su AVX registru, jei branduolys yra sukurtas GCC 9 (jei jis įtaisytas ankstesnėse GCC leidimuose, klaida nepasirodo, nes GCC 9 talpyklos gijos vietinio kintamojo adresą registre, o ankstesnės GCC versijos įkelia jį kiekvieną kartą).

Dėl šios problemos programa per anksti nutrūksta dėl atminties sugadinimo klaidos. Labiausiai pastebimas ir dažniausiai stebimas klaidos pasireiškimas plieno avarijos programos, parašyta Go kalba. Dėl nurodytos problemos „Go“ programos nutrūksta anksčiau laiko, dažniausiai su klaidomis „vykdymo laiko klaida: netinkamas atminties adresas arba nulio rodyklės nuoroda“, „vykdymo laikas: netikėtas kompiuterio grįžimas“ ir „segmentavimo pažeidimas“. Branduolio klaida lieka nepataisyta. Svarstoma galimybė „Go“ kalbos vykdymo laiko pakeitimų įtraukimas, kad būtų galima pasirinktinai apeiti problematiškų „Linux“ branduolių klaidas, už papildomas išlaidas.

Šaltinis: opennet.ru

Добавить комментарий