2011-09-05 11 views
5

Una aplicación multiproceso se bloquea y no responde a ningún comando. He tratado siguientes cosas sin suerte:Cómo depurar un proceso colgado multiproceso en Linux?

  1. Adjuntar un proceso para GDB (error: (BGF) adjuntar 6026 Colocación de procesar 6026 ptrace:. Operación no permitida)
  2. gstack (gstack simplemente cuelga de esa)

¿Hay alguna forma de solucionar este problema?

+0

¿Está intentando adjuntar como usuario raíz, o como el usuario que creó el proceso, o como algún otro usuario? ¿Has intentado ejecutar el programa desde gdb antes de que llegue al punto donde se cuelga? –

+0

@Jonatha Leffler Ejecuté ese proceso en la raíz y utilicé la misma identificación para adjuntar el proceso en gdb. Este no es un proceso en primer plano, este es un proceso demoníaco. – Thangaraj

+0

OK; si se ejecuta como root y está tratando de ejecutar gdb como root, entonces no es una simple cuestión de privilegios (pero puede ser uno complejo). En general, lo que haría es iniciar el daemon en gdb, usando opciones como 'set follow-fork-mode' y' set fork-detach-mode'. –

Respuesta

6

Gracias por su respuesta. El problema está en el nivel kernel. utilizamos echo t>/proc/sysrq-trigger, que registra la pila de todo el proceso en/var/log/messages. Esta traza de pila ayudó a analizar el problema.

Desde el seguimiento de la pila, el sistema de archivos publicó algún evento esperado en nombre del proceso de solicitud a otro proceso (que está en estado de extinción) y esperando la respuesta indefinidamente. Lo que resulta en estado colgado.

1

Lo más probable es que alguien más ya esté rastreando este proceso. Para saber quién lo está haciendo, mira el sistema de archivos proc.

cat /proc/6026/status|grep TracerPid 
+0

El campo TracePid es cero – Thangaraj

+0

Entonces la razón es algo más – ks1322

Cuestiones relacionadas