2012-06-20 111 views
18

Estoy ejecutando una aplicación ASP.NET 4.0 bajo IIS 7.5. Varias veces al día, nuestro grupo de aplicaciones se recicla inesperadamente. Nuestro registro del sistema muestra el siguiente evento cuando esto ocurre:Un proceso que sirve al grupo de aplicaciones 'X' sufrió un error de comunicación fatal con el Servicio de Activación de Proceso de Windows

Un proceso que sirve al grupo de aplicaciones 'X' sufrió un error de comunicación fatal con el Servicio de Activación de Proceso de Windows. La identificación del proceso era '5768'. El campo de datos contiene un error numérico.

O

Un proceso para grupo de aplicaciones 'X' no respondió a un ping. La identificación del proceso era '1032'.

Casi siempre, hay un evento correspondiente a la misma hora exacta en el registro de la aplicación de esta manera:

Faulting application name: w3wp.exe, version: 7.5.7600.16385, time stamp: 0x4a5bcd2b 
Faulting module name: clr.dll, version: 4.0.30319.269, time stamp: 0x4ee9ae83 
Exception code: 0xc00000fd 
Fault offset: 0x00001916 
Faulting process id: 0x508 
Faulting application start time: 0x01cd4d8958ecf9ad 
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe 
Faulting module path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
Report Id: 8dcc413b-b98a-11e1-8075-001c23d6d910 

así que instalé IIS Debugging Tools y establecer una regla de bloqueo, se especifica "una aplicación web específica de IIS grupo ", no hay registro para excepciones de primera oportunidad, y nada en" Configuración avanzada "(excepciones, puntos de interrupción, eventos).

También soy (al mismo tiempo) que se ejecuta ADPlus desde las herramientas de depuración de Windows con la siguiente línea de comandos:

adplus -crash -pn w3wp.exe -NoDumpOnFirst -o c:\logs 

Sin embargo, desde que he adjuntado los depuradores, he recibido varios niveles de "alerta" mensajes en el registro del sistema (los relacionados con el "grupo de aplicaciones de proceso que sirve 'X' sufrieron un error de comunicación fatal ..."), pero ya no obtengo el evento de nivel de error correspondiente en el registro de la aplicación.

La única cosa que he sido capaz de conseguir es la siguiente (había unos 50 de estos):

[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 3300. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4992. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 5456. Exit code - 0x800703e9 
[6/18/2012 7:50:25 PM] Thread exited. Exiting thread system id - System ID: 4924. Exit code - 0x800703e9 

Código de salida 0x800703e9 indica un desbordamiento de pila en algún lugar, lo cual es una suerte, porque que en caso ser fácil de arreglar una vez que pueda encontrarlo.

Sin embargo, para hacerlo, necesito más información de mis volcados de emergencia para poder abrirlos con WinDbg y usar el comando "! Clrstack" para identificar mi problema.

Mi pregunta es: ¿Tengo las herramientas de depuración configuradas incorrectamente o estoy malentendiendo los registros de eventos? Parece que nuestro grupo de aplicaciones se recicla cada vez que veo el evento en el registro del sistema con respecto al "error de comunicación fatal con el servicio de activación de procesos de Windows". Sin embargo, no recibo ninguna información de volcado de las herramientas de depuración IIS o ADPlus cuando ocurren esos eventos. Y por alguna razón, dado que he adjuntado los depuradores, no obtengo más eventos de "Error" en el registro de la aplicación que se corresponden con mis eventos de advertencia de registro del sistema. No estoy seguro por qué. De alguna manera, necesito obtener el volcado completo con la información de CLR para poder averiguar dónde está mi problema.

La única otra cosa que puedo mencionar es que el servicio de informe de errores de Windows no se está ejecutando. No estoy seguro si necesita ser o no.

Gracias por cualquier ayuda.

+0

Relacionados http://stackoverflow.com/questions/7204444/iis7-a-process-serving-application-pool-yyyyy-suffered-a-fatal-communication – RJFalconer

Respuesta

4

Tanto el código de excepción que recibía en el registro de la aplicación, como el código de salida del hilo indican que tiene desbordamiento de la pila.Sin embargo, es desconcertante por qué el proceso no se cuelga cuando el hilo sale con un error de desbordamiento de la pila. De todas formas, para permitir la ruptura de excepción de desbordamiento de pila, el comando es:

sxe sov 

Tenga en cuenta que tendrá que utilizar la versión x86 del depurador en su caso, debido a que su grupo de aplicaciones se configura como proceso de 32 bits.

Cuestiones relacionadas