macOS ortamında fork çağrısı Go uygulamalarında kilitlenmeye yol açtı
Öne çıkanlar
- macOS Tahoe üzerinde Go uygulamalarının fork çağrıları yüzde 98 işlemci tüketimine neden oldu.
- libsystem_trace kütüphanesindeki bellek hatası, Go sinyal maskelemesi yüzünden yakalanamadı.
- ARM mimarisinin hata döngüsü kuralı çocuk sürecin sonsuz döngüye girmesine yol açtı.
Formal mühendisleri, macOS Tahoe üzerinde Go ile geliştirilen istemci yazılımlarında yaşanan yüzde 98 işlemci kullanımı ve kilitlenme sorununu inceledi. Yapılan sistem analizlerinde problemin, Go çalışma zamanının komut çalıştırma sırasında kullandığı fork/exec yapısından kaynaklandığı belirlendi. Benzer sorunun Skaffold ve GitHub Actions çalıştırıcılarında da görüldüğü kaydedildi.
Araştırma, macOS Network Extension ve libsystem_trace kütüphanelerindeki bellek erişim hatasının süreci tetiklediğini gösterdi. Go çalışma zamanı fork işlemi öncesinde sinyalleri engellediği için oluşan bellek hatası sinyali yakalanamadı. ARM mimarisinin hata veren komutu yeniden çalıştırma kuralı nedeniyle çocuk süreç sonsuz bir çekirdek döngüsüne girdi ve ana süreci askıda bıraktı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.