overlappedFreeError
Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

overlappedFreeError MDA

 

El asistente para la depuración administrada overlappedFreeError (MDA) se activa cuando se llama al método Overlapped.Free(NativeOverlapped*) antes de que finalice la operación superpuesta.

Infracciones de acceso o daños en la pila de recolección de elementos no utilizados.

Se ha liberado una estructura superpuesta antes de que finalizara la operación. La función que está utilizando el puntero superpuesto podría escribir después en la estructura, una vez que se hubiese liberado. Esto puede producir daños en la pila porque otro objeto podría ocupar ahora esa región.

Este asistente para la depuración administrada no podría representar un error si la operación superpuesta no se se hubiese iniciado correctamente.

Asegúrese de que la operación de E/S que utiliza la estructura superpuesta haya finalizado antes de llamar al método Free(NativeOverlapped*).

Este MDA no tiene efecto en el CLR.

A continuación se muestra un ejemplo de los resultados de 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.

<mdaConfig>
  <assistants>
    <overlappedFreeError/>
  </assistants>
</mdaConfig>
Mostrar:
© 2016 Microsoft