Rust 1.98 sürümünde derleyici kaynaklı kritik bellek hatası tespit edildi
Öne çıkanlar
- Rust 1.98, dinamik asenkron trait çağrılarında vtable içine sıfır metod girişi yerleştirdi.
- Güvenli Rust kodu sıfır adresine dallanarak SIGSEGV hatasıyla çöktü.
- Hata Rust 1.97.1 ve güncel nightly sürümlerinde tekrarlanmıyor.
Rust 1.98 derleyicisinde, dinamik trait yönlendirmesi (dynamic dispatch) kullanan asenkron kodlarda bellek erişim hatasına (SIGSEGV) yol açan kritik bir derleme hatası tespit edildi. Geliştiriciler, derleyicinin sanal yöntem tablosunda (vtable) belirli metot yuvalarını boş (sıfır) bıraktığını ve güvenli Rust kodunun bu adrese dallanması sonucu uygulamanın çöktüğünü bildirdi.
Sorun, özellikle Rama ağ kütüphanesinin sürekli entegrasyon süreçlerinde aarch64-apple-darwin hedefinde gözlemlendi. Aynı kaynak kodunun Rust 1.97.1 ve güncel nightly derlemelerinde sorunsuz çalıştığı, ancak Rust 1.98.0 ile derlendiğinde çağrıcı fonksiyonun vtable üzerindeki sıfır değerine dallanarak çöktüğü belirlendi.
Hatanın, derleyicinin tip koşullarını yanlış değerlendirip metodu vtable içerisine yerleştirmemesinden kaynaklandığı düşünülüyor. Etkilenen projeler için dinamik yönlendirmeyi doğrudan fonksiyon göstericileri veya Any tipi üzerinden çözen geçici çözümler paylaşıldı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.