overlappedFreeError MDA
O overlappedFreeError Assistente de depuração gerenciada (MDA) é ativado quando o Overlapped.Free(NativeOverlapped*) método é chamado antes que a operação sobreposta foi concluída.
Sintomas
Violações de acesso ou a corrupção da pilha de coletor de lixo.
Causa
Uma estrutura sobreposta foi liberada antes que a operação foi concluída. A função que está usando o ponteiro sobreposto pode gravar a estrutura mais tarde, após ele ter sido liberado. Porque o outro objeto agora pode ocupar essa região, que pode causar corrupção de heap.
Este MDA pode não representar um erro se a operação sobreposta não foi iniciado com êxito.
Resolução
Certifique-se de que a operação de e/S usando a estrutura sobreposta foi concluída antes de chamar o Free(NativeOverlapped*) método.
Efeito sobre o tempo de execução.
Este MDA não tem efeito sobre o CLR.
Saída
A seguir é exemplo de saída 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.
Configuração
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>