overlappedFreeError MDA
Yönetilen overlappedFreeError
hata ayıklama yardımcısı (MDA), çakışan işlem tamamlanmadan önce yöntem çağrıldığında Overlapped.Free(NativeOverlapped*) etkinleştirilir.
Belirtiler
Çöp toplanmış yığının erişim ihlalleri veya bozulması.
Nedeni
İşlem tamamlanmadan önce çakışan bir yapı serbest bırakıldı. Çakışan işaretçiyi kullanan işlev, serbest bırakıldıktan sonra yapıya yazabilir. Başka bir nesne artık bu bölgeyi kaplayabileceğinden bu durum yığın bozulmasına neden olabilir.
Çakışan işlem başarıyla başlatılmadıysa bu MDA bir hatayı temsil etmeyebilir.
Çözüm
Yöntemi çağırmadan önce çakışan yapıyı kullanan G/Ç işleminin tamamlandığından Free(NativeOverlapped*) emin olun.
Çalışma Zamanı Üzerindeki Etkisi
Bu MDA'nın CLR üzerinde hiçbir etkisi yoktur.
Çıktı
Bu MDA için örnek çıktı aşağıda verilmiştir.
An overlapped pointer (0x00ea3430) that was not allocated on the GC heap was passed via Pinvoke to the win32 function 'WriteFile' in module 'KERNEL32.DLL'. If the AppDomain is shut down, this can cause heap corruption when the async I/O completes. The best solution is to pass a NativeOverlappedStructure retrieved from a call to System.Threading.Overlapped.Pack(). If the AppDomain exits, the CLR will keep this structure alive and pinned until the I/O completes.
Yapılandırma
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin