overlappedFreeError MDA

Note

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.

Symptoms

Çöp toplanan yığının erişim ihlalleri veya bozulması.

Cause

İş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ünürlük

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.

Çıkış

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.

Konfigürasyon

<mdaConfig>
  <assistants>
    <overlappedFreeError/>
  </assistants>
</mdaConfig>

Ayrıca bakınız