overlappedFreeError MDA
The overlappedFreeError gerenciado Assistente de depuração (MDA) é ativado quando o Overlapped.Free(NativeOverlapped*) método é chamado antes sobreposta a operação foi concluída.
Sintomas
Violações de acesso ou corrupção de heap de coleta de lixo.
Causa
Uma estrutura sobreposta foi liberada antes da operação foi concluída.A função que está usando o ponteiro sobreposto pode escrever a estrutura mais tarde, depois que foi liberada.Que pode causar corrupção da pilha, pois outro objeto agora pode ocupar essa região.
Este MDA pode não representar um erro se a operação sobreposta não iniciou com êxito.
Resolução
Assegurar 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>
Consulte também
Conceitos
Diagnosticar erros com assistentes de depuração gerenciadas
Visão geral do empacotamento interop