Compartir vía


MDA de invalidGCHandleCookie

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

El Asistente para la depuración administrada (MDA) invalidGCHandleCookie se activa cuando se intenta realizar la conversión de una cookie IntPtr no válida a un GCHandle.

Síntomas

Comportamiento indefinido, como infracciones de acceso y daños en la memoria, al intentar usar o recuperar GCHandle desde IntPtr.

Causa

La cookie probablemente no es válida porque no se creó originalmente desde un GCHandle, representa un GCHandle que ya se ha liberado, es una cookie de un GCHandle en un dominio de aplicación diferente, o bien se serializó en código nativo como GCHandle pero se volvió a pasar al CLR como IntPtr, donde se intentó realizar una conversión.

Solución

Especifique una cookie de IntPtr válida para el GCHandle.

Efecto en el Runtime

Cuando se habilita este MDA, el depurador ya no es capaz de realizar un seguimiento de las raíces hasta sus objetos porque los valores de cookie que se pasan son diferentes a los que se devuelven cuando el MDA no está habilitado.

Output

Se notifica el valor de la cookie de IntPtr no válida.

Configuración

<mdaConfig>
  <assistants>
    <invalidGCHandleCookie />
  </assistants>
</mdaConfig>

Consulte también