MDA de gcUnmanagedToManaged
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) gcUnmanagedToManaged
produce una recolección de elementos no utilizados siempre que un subproceso realice la transición de código no administrado a administrado.
Síntomas
Una aplicación que ejecute componentes de usuario no administrados con la invocación de plataforma y COM genera una infracción de acceso no determinista en CLR.
Causa
Si una aplicación está ejecutando componentes de usuario no administrados, dichos componentes podrían haber dañado el montón de recolección de elementos no utilizados. Esto provoca una infracción de acceso en CLR cuando el recolector de elementos no utilizados intenta desplazarse por el gráfico de objetos.
Solución
Al habilitar este asistente, se reduce el tiempo entre el momento en que el componente no administrado daña la pila de recolección de elementos no utilizados y el momento en que se produce la infracción de acceso al forzar que tenga lugar una recolección antes de cada transición administrada.
Efecto en el Runtime
Produce una recolección de elementos no utilizados siempre que un subproceso realice la transición de código no administrado a administrado.
Output
Este MDA no produce ninguna salida.
Configuración
<mdaConfig>
<assistants>
<gcUnmanagedToManaged/>
</assistants>
</mdaConfig>