invalidGCHandleCookie MDA
嘗試從無效的 IntPtr Cookie 轉換至 GCHandle 時,invalidGCHandleCookie Managed 偵錯助理 (MDA) 就會啟動。
症狀
嘗試從 IntPtr 使用或擷取 GCHandle 時,發生未定義的行為,例如存取違規和記憶體損毀。
原因
Cookie 可能是無效的,因為 Cookie 原先並非由 GCHandle 產生,它表示已經釋放的 GCHandle,並且也是不同應用程式定義域中 GCHandle 的 Cookie,或是做為 GCHandle 封送處理 (Marshal) 至機器碼,但卻傳遞回到 CLR 做為 IntPtr,並在其中嘗試轉型 (Cast)。
解決方式
為 GCHandle 指定有效的 IntPtr Cookie。
對執行階段的影響
在啟用這個 MDA 時,由於傳回的 Cookie 值不同於未啟用這個 MDA 時所傳回的值,偵錯工具不再能夠追蹤回到它們的物件。
Output
會報告無效的 IntPtr Cookie 值。
組態
<mdaConfig>
<assistants>
<invalidGCHandleCookie />
</assistants>
</mdaConfig>