Linux 核心中已發現一個錯誤,該錯誤會導致某些使用 AVX 的程式出現故障

自 5.2 版本以來的 Linux 核心中, 表現出來了 從引發異常(頁面錯誤)時處理的訊號處理程序返回時,會導致 AVX 暫存器的內容被破壞的錯誤。 當執行涉及 AVX 暫存器計算的多執行緒程式(“-pthread”)時,如果核心是在 GCC 9 中建構的(如果是在早期版本的 GCC 中建構的,則不會出現該錯誤,因為 GCC 9 緩存暫存器中線程局部變數的位址,早期版本的GCC 每次都會載入它)。

該問題會導致程式因記憶體損壞錯誤而提前終止。 最明顯且最常見的錯誤表現 已成為 崩潰 應用,用 Go 語言編寫。 由於上述問題,Go 程式提前終止,通常會出現錯誤「運行時錯誤:無效的記憶體位址或 nil 指標取消引用」、「運行時:意外返回 pc」和「分段衝突」。 內核中的錯誤仍未修復。 正在考慮可能性 新增 Go 語言運行時的更改,以選擇性地繞過有問題的 Linux 核心上的錯誤,但代價是額外的開銷。

來源: opennet.ru

添加評論