overlappedFreeError MDA
Asystent overlappedFreeError
zarządzanego debugowania (MDA) jest aktywowany po Overlapped.Free(NativeOverlapped*) wywołaniu metody przed zakończeniem nakładanej operacji.
Objawy
Naruszenia dostępu lub uszkodzenie sterty zbieranej przez śmieci.
Przyczyna
Nakładana struktura została zwolniona przed ukończeniem operacji. Funkcja korzystająca z nakładającego się wskaźnika może później zapisywać w strukturze po jej uwolnieniu. Może to spowodować uszkodzenie stert, ponieważ inny obiekt może teraz zajmować ten region.
Ta usługa MDA może nie reprezentować błędu, jeśli nakładana operacja nie została pomyślnie uruchomiona.
Rozwiązanie
Przed wywołaniem metody upewnij się, że operacja we/wy przy użyciu nakładającej się struktury została ukończona Free(NativeOverlapped*) .
Wpływ na środowisko uruchomieniowe
To MDA nie ma wpływu na CLR.
Dane wyjściowe
Poniżej przedstawiono przykładowe dane wyjściowe dla tego rozwiązania 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.
Konfigurowanie
<mdaConfig>
<assistants>
<overlappedFreeError/>
</assistants>
</mdaConfig>
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla