2010-01-09 12 views
7

Tengo una aplicación .NET C# multiproceso, usa Direct3D 9/10 y XAudio2. (A Direct3D solo se accede por un hilo, lo mismo para XAudio2. Direct3D no es el problema porque el error se manifiesta en el modo DX9 o DX10 sin ningún cambio en su comportamiento.)Bloqueo de la aplicación sin ningún tipo de excepción

A veces (hay algunas áreas que da este problema al azar) esta aplicación falla de una manera bastante poco espectacular. Incluso si la aplicación se inicia a través de Visual Studio con depurador, se bloquea sin dar NINGUNA clase de excepción. (Comienza diciendo "applicationname.svchost.exe se colgó, etc..etc..¿Deseas depurar?", Si presiono yes, me dice "no se puede depurar una aplicación ya cerrada")

There ¿No hay forma de averiguar cuál es la causa del bloqueo? Porque me he quedado sin ideas, el depurador no me está dando ninguna información. Sin excepción, ni siquiera puedo hacer un seguimiento de pila o un volcado. P (estoy suponiendo que es un problema de sincronización (incluso en esa área solo estoy haciendo un trabajo secuencial ...), pero ¿por qué no está lanzando una excepción?: |)

En las áreas donde Se produce un problema. Estoy descargando una recarga de una serie de clases relacionadas con una novela (en un hilo central secuencial, así que dudo que pueda ser un problema) y comenzando una nueva música a través de XAudio2. (Por cierto, ¿cuál es la ¿Consideración más profunda sobre XAudio2? ¿Es seguro llamar desde múltiples hilos?)

Gracias por la ayuda.

P.S. Hay un software para adjuntar al mío para monitorear todas las llamadas y me dice ¿cuál es la última llamada antes del accidente?

+0

Debe publicar el mensaje exacto que está recibiendo cuando el programa se bloqueó. Dudo que realmente diga "se estrelló". Puede haber algunas pistas útiles en el mensaje de error. – Jacob

+0

Sin mensaje y sin ninguna excepción dada por el depurador VS, el mensaje es "la aplicación name.svchost.exe ha dejado de funcionar, ¿quiere depurar?", Si presiono yes, se inicia otro estudio visual y me dice "no se puede depurar una aplicación ya cerrada " – feal87

Respuesta

4

Debe intentar usar Windbg, analizar el volcado de emergencia debe señalarle el problema, si su sospecha es correcta y es un problema de sincronización, la causa del problema puede ser difícil de detectar.

+0

Descubrí el problema con Windbg, fue un error loco con XAudio2. ¡Gracias! – feal87

2

¿Ha comprobado los registros de eventos en el Panel de administración de Windows? Todos los errores de cualquier tipo siempre se registran en esta sección con detalles mínimos.

Una vez tuve una aplicación que se bloqueaba sin excepciones y la única ayuda que encontré fue el Visor de registro de eventos donde descubrí que el origen del bloqueo era una StackOverflowException.

+0

comprobado, no hay ningún error relacionado con mi aplicación o estudio visual ... – feal87

+0

es probable que el error esté en el registro de eventos, ¿quizás en algún servicio oscuro o dll? – AUSteve

+0

No, no hay mensaje. – feal87

Cuestiones relacionadas