overlappedFreeError MDA
Not
Bu makale .NET Framework'e özgüdür. .NET 6 ve sonraki sürümleri de dahil olmak üzere daha yeni .NET uygulamaları için geçerli değildir.
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 toplanan yığının erişim ihlalleri veya bozulması.
Neden
İşlem tamamlanmadan önce çakışan bir yapı serbest kaldı. Çakışan işaretçiyi kullanan işlev, daha sonra serbest ayrı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>