L'Assistant Débogage managé (MDA, Managed Debugging Assistant) ContextSwitchDeadlock est activé lorsqu'un blocage est détecté au cours d'une tentative de transition de contexte COM.
Symptômes
Le symptôme le plus courant est qu'un appel sur un composant COM non managé à partir du code managé ne soit pas retourné. Un autre symptôme est l'augmentation de l'utilisation de la mémoire avec le temps.
Cause
La cause la plus probable est qu'un thread cloisonné (STA, Single-Threaded Apartment) ne pompe pas de messages. Le thread cloisonné (STA, Single-Threaded Apartment) attend sans pomper de messages ou exécute de longues opérations et n'autorise pas la file d'attente de messages à pomper.
L'augmentation de l'utilisation de la mémoire avec le temps est due à la tentative du thread finaliseur d'appeler release sur un composant COM non managé et au fait que ce composant ne soit pas retourné. Cela empêche le finaliseur de récupérer d'autres objets.
Résolution
Suivez les règles COM concernant le pompage de messages STA.
Effet sur le runtime
Ce MDA n'a aucun effet sur le CLR. Il signale uniquement des données relatives aux contextes COM.
Sortie
Message décrivant le contexte courant et le contexte cible.
Configuration
Copier le code
<mdaConfig>
<assistants>
<contextSwitchDeadlock enable="false" />
</assistants>
</mdaConfig>
Partager