Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Эта статья относится к .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
Помощник overlappedFreeError по управляемой отладке активируется при Overlapped.Free(NativeOverlapped*) вызове метода до завершения перекрывающейся операции.
Симптомы
Доступ к нарушениям или повреждению сборки мусора.
Причина
Перекрываемая структура была освобождена до завершения операции. Функция, которая использует перекрывающийся указатель, может записываться в структуру позже после освобождения. Это может привести к повреждению кучи, так как другой объект теперь может занять этот регион.
Эта MDA может не представлять ошибку, если перекрываемая операция не была успешно запущена.
Разрешение
Перед вызовом метода убедитесь, что операция ввода-вывода Free(NativeOverlapped*) с использованием перекрывающейся структуры завершена.
Влияние на среду выполнения
Этот MDA не влияет на среду CLR.
Выходные данные
Ниже приведен пример выходных данных для этого 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>