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.