invalidGCHandleCookie MDA
尝试从无效的 IntPtr cookie 转换为 GCHandle 时,将激活 invalidGCHandleCookie 托管调试助手 (MDA)。
症状
尝试使用 GCHandle 或从 IntPtr 中检索它时发生未定义的行为,如访问冲突和内存损坏。
原因
该 cookie 可能因为它最初不是从 GCHandle 创建的而无效,可能表示一个已释放的 GCHandle,可能是另一个应用程序域中的 GCHandle 的一个 cookie,也可能是作为一个 GCHandle 被封送到本机代码但却作为一个 IntPtr 传回了 CLR 中(此时发生了强制转换)。
解决方法
为 GCHandle 指定一个有效的 IntPtr cookie。
对运行时的影响
启用此 MDA 时,调试器再也无法跟踪返回其对象的根,因为传递回的 cookie 值与未启用此 MDA 时返回的值不同。
Output
会报告无效的 IntPtr cookie 值。
配置
<mdaConfig>
<assistants>
<invalidGCHandleCookie />
</assistants>
</mdaConfig>