Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Dit artikel is specifiek voor .NET Framework. Dit geldt niet voor nieuwere implementaties van .NET, waaronder .NET 6 en nieuwere versies.
De overlappedFreeError beheerde foutopsporingsassistent (MDA) wordt geactiveerd wanneer de Overlapped.Free(NativeOverlapped*) methode wordt aangeroepen voordat de overlappende bewerking is voltooid.
Symptomen
Toegangsschendingen of beschadiging van de garbagecollection heap.
Oorzaak
Er is een overlappende structuur vrijgemaakt voordat de bewerking is voltooid. De functie die de overlappende aanwijzer gebruikt, kan later naar de structuur schrijven nadat deze is vrijgemaakt. Dat kan leiden tot heapbeschadiging omdat een ander object nu die regio kan bezetten.
Deze MDA vertegenwoordigt mogelijk geen fout als de overlappende bewerking niet is gestart.
Oplossing
Zorg ervoor dat de I/O-bewerking met behulp van de overlappende structuur is voltooid voordat u de Free(NativeOverlapped*) methode aanroept.
Effect op de runtime
Deze MDA heeft geen effect op de CLR.
Uitvoer
Hieronder ziet u voorbeelduitvoer voor deze 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.
Configuratie
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>