Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Note
Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.
El overlappedFreeError asistente de depuración administrada (MDA) se activa cuando se llama al Overlapped.Free(NativeOverlapped*) método antes de que se haya completado la operación superpuesta.
Síntomas
Infracciones de acceso o daños del montón recopilado por elementos no utilizados.
Causa
Se liberó una estructura superpuesta antes de que se complete la operación. La función que usa el puntero superpuesto podría escribir en la estructura más adelante, después de liberarla. Esto puede provocar daños en el montón porque otro objeto podría ocupar ahora esa región.
Este MDA podría no representar un error si la operación superpuesta no se inició correctamente.
Resolución
Asegúrese de que la operación de E/S mediante la estructura superpuesta se haya completado antes de llamar al Free(NativeOverlapped*) método .
Efecto en el tiempo de ejecución
Este MDA no tiene ningún efecto en clR.
Output
A continuación se muestra la salida de ejemplo para este 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.
Configuration
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>