Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Note
Dieser Artikel ist spezifisch für .NET Framework. Sie gilt nicht für neuere Implementierungen von .NET, einschließlich .NET 6 und höherer Versionen.
Der overlappedFreeError verwaltete Debugging-Assistent (Managed Debugging Assistant, MDA) wird aktiviert, wenn die Overlapped.Free(NativeOverlapped*) Methode aufgerufen wird, bevor der überlappende Vorgang abgeschlossen ist.
Symptome
Zugriffsverletzungen oder Beschädigungen des vom Garbage Collection-Heap gesammelten Heaps.
Ursache
Vor Abschluss des Vorgangs wurde eine überlappende Struktur freigegeben. Die Funktion, die den überlappenden Zeiger verwendet, kann später in die Struktur schreiben, nachdem sie freigegeben wurde. Dies kann zu Heapbeschädigungen führen, da ein anderes Objekt jetzt diese Region belegt.
Dieser MDA stellt möglicherweise keinen Fehler dar, wenn der überlappende Vorgang nicht erfolgreich gestartet wurde.
Auflösung
Stellen Sie sicher, dass der E/A-Vorgang mit der überlappenden Struktur abgeschlossen wurde, bevor die Free(NativeOverlapped*) Methode aufgerufen wird.
Effekt auf die Laufzeit
Diese MDA hat keine Auswirkungen auf die CLR.
Output
Im Folgenden sehen Sie eine Beispielausgabe für diese MDA.
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.
Konfiguration
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>