Linux çekirdeğinde, AVX kullanan bazı programların arızalanmasına neden olan bir hata tespit edildi

Linux çekirdeğinde 5.2 sürümünden bu yana, belirir Bir istisna atıldığında işlenen bir sinyal işleyiciden geri dönerken AVX kaydının içeriğinin ihlal edilmesine neden olan bir hata (sayfa hatası). Sorun, çekirdek GCC 9'da yerleşikse (GCC'nin önceki sürümlerinde yerleşikse, GCC 9 önbelleğe alındığından hata görünmez) AVX kaydıyla hesaplamalar içeren çok iş parçacıklı programları ("-pthread") çalıştırırken ortaya çıkar. yazmaçtaki yerel iş parçacığı değişkeninin adresi ve GCC'nin önceki sürümleri onu her zaman yükler).

Sorun, programın bellek bozulması hatasıyla zamanından önce sonlandırılmasına neden oluyor. Hatanın en dikkat çekici ve sık gözlemlenen tezahürü çelik kazalar uygulamaları, Go dilinde yazılmıştır. Belirtilen sorun nedeniyle Go programları, genellikle "çalışma zamanı hatası: geçersiz bellek adresi veya sıfır işaretçi referansı", "çalışma zamanı: beklenmeyen dönüş bilgisayarı" ve "segmentasyon ihlali" hatalarıyla erken sonlandırılıyor. Çekirdekteki hata düzeltilmedi. Olasılık değerlendiriliyor Ek yük pahasına, sorunlu Linux çekirdeklerindeki hataları seçici olarak atlamak için Go dili çalışma zamanına değişiklikler eklemek.

Kaynak: opennet.ru

Yorum ekle