Bug telah diidentifikasi di kernel Linux yang menyebabkan beberapa program yang menggunakan AVX tidak berfungsi

Di kernel Linux sejak rilis 5.2, dimanifestasikan Kesalahan yang menyebabkan isi register AVX dilanggar ketika kembali dari pengendali sinyal yang ditangani ketika pengecualian dilemparkan (kesalahan halaman). Masalah terjadi ketika menjalankan program multi-thread ("-pthread") yang melibatkan perhitungan dengan register AVX, jika kernel dibangun di GCC 9 (jika dibangun di rilis GCC sebelumnya, kesalahan tidak muncul, karena cache GCC 9 alamat variabel thread-lokal dalam register, dan versi GCC sebelumnya memuatnya setiap saat).

Masalah ini menyebabkan program dihentikan sebelum waktunya dengan kesalahan kerusakan memori. Manifestasi kesalahan yang paling mencolok dan sering diamati baja mogok aplikasi, ditulis dalam bahasa Go. Karena masalah yang disebutkan, program Go berhenti sebelum waktunya, biasanya dengan kesalahan “runtime error: invalid memory address or nil pointer dereference”, “runtime: unknown return pc” dan “segmentation crimes”. Bug di kernel masih belum diperbaiki. Kemungkinan tersebut sedang dipertimbangkan menambahkan perubahan pada runtime bahasa Go untuk secara selektif mem-bypass kesalahan pada kernel Linux yang bermasalah, dengan biaya overhead tambahan.

Sumber: opennet.ru

Tambah komentar