2016-08-04

Error en debuging ContextSwitchDeadLock


Problema


leyendo de forma recursiva los ficheros del disco me ha saltado este mensaje de error
'******************
Ocurrió ContextSwitchDeadlock
Message: El Asistente para la depuración administrada 'ContextSwitchDeadlock' ha detectado un problema en 'E:\users\joaqui\documents\NET\Version2015\Pruebas\RepesIneitorPruebasBorrar\SolucionWpfBusquedaFicheros20160719\WpfBusquedaFicheros20160719\bin\Debug\WpfBusquedaFicheros20160719.vshost.exe'.
Información adicional: El CLR no ha podido realizar la transición del contexto COM 0x1144008 al contexto COM 0x11440c0 durante 60 segundos. Es probable que el subproceso que contiene el contexto o apartamento de destino esté en espera sin proporcionar mensajes o que procese una operación de ejecución muy larga que no proporcione mensajes Windows. Normalmente, esta situación tiene un impacto negativo en el rendimiento y puede hacer que la aplicación no responda o que acumule continuamente el uso de la memoria. Para evitar este problema, todos los subprocesos de contenedores uniproceso (STA) deberían utilizar primitivos de espera que proporcionen mensajes (como CoWaitForMultipleHandles) y proporcionar mensajes regularmente durante operaciones de ejecución largas.
'**************

La solución

http://sergiotardio.blogspot.com.es/2008/06/error-en-el-debuging.html

Error en el debuging ContextSwitchDeadLock
Hola
Que errorcito fregado este, no se si les salió alguna vez pero a mi me hizo perder varias horas, antes de divagar en lo que significa por que la verdad es un tema un poco espeso les comento la "solución"
Hay que apagar un checkbox que corresponde al MDA (managed debug assistant) de nombre  ContextSwitchDeadLock.
Depurar / Excepciones / Managed Debuging assistants.
Apaguen el check box correspondiente ContextSwitchDeadLock
Por default no aparece la opcion de Excepciones en el submenu Debug, si ese es su caso añadanlo haciendo lo siguiente:
Vayan a
Ver / barras de herramientas / Personalizar
Una vez ahí en el panel izquierdo seleccionen Debug y entre las opciones que aparecen a la derecha estará Excepciones, tomen la opción   y arrastren hasta el menú debug
Bien ahora una pequeña explicación de esto, resulta que los MDA son asistentes y ayudas que se utilizan en el debug en coordinación con la CLR , ellos generan mensajes informativos en tiempo de ejecución sobre eventos y por lo que entiendo el error que se produce en este caso es por que el depurador lanza esta excepción ya que encuentra hilos de ejecución en la aplicación que se está depurando que aparentan estar colgados ya que no devuelven ningún mensaje y el MDA al no conocer el estado genera esta excepción.  Por otro lado he leido que es un problema en algún componente COM que la aplicación que esta haciendo burreras jeje Al inicio les coloque ¨Solucion¨ entre comillas por que si se dan cuenta en realidad el problema no se soluciona pero si se evita que el Debug lance el error, el problema muy probablemente se debe a un componente COM que no está comunicándose correctamente con el MDA y por tanto este lanza la excepción.
Bueno en fin ahí va un unos links por si quieren leer mas acerca de este error, que es toda una rareza confusa y si alguien entiende mas de esto y quiere dejarme un comentario, será bien venido

http://msdn.microsoft.com/es-es/library/d21c150d(VS.80).aspx
http://msdn.microsoft.com/es-es/library/ms172233(VS.80).aspx

No hay comentarios: