2012-09-05 16 views
14

Así que yo fuego hasta mi solicitud ++ C en GDB, y cuando se cierra, básicamente obtener:C++ Linux Binary terminado con señal SIGKILL - ¿por qué? (Cargado en el BGF)

[Thread 0x7fff76e07700 (LWP 6170) exited] 
[Thread 0x7fff76f08700 (LWP 6169) exited] 
[Thread 0x7fff77009700 (LWP 6168) exited] 
... 
Program terminated with signal SIGKILL, Killed. The program no longer exists. 
(gdb) 

que tienen, literalmente, ni idea de por qué esto está ocurriendo, por qué no puedo hacer una retroceder para ver cómo salió? ¿Alguien tiene alguna idea? Nunca debe terminar :(

Gracias!

Respuesta

22

tengo, literalmente, ni idea de por qué esto está ocurriendo,

Esto generalmente significa que, o bien

  • algún otro proceso ejecuta una kill -9 <your-pid>, o
  • el asesino OOM kernel decidió que su proceso consumió demasiados fuentes, y lo terminó (efectivamente, el núcleo ejecutó kill -9 para ello). Debe buscar en /var/log/messages (/var/log/syslog en las variantes de Ubuntu) para encontrar rastros de eso - el kernel normalmente registra un mensaje cuando OOM realiza algún proceso.

¿por qué no puedo hacer un rastreo para ver cómo salió?

Porque para ver una traza inversa, el proceso debe existir. Si no existe, no tiene pila, por lo que no puede tener traza inversa.

+0

O el programador quería ser inteligente por alguna razón y uno de los hilos está matando su propio programa con SIGKILL. –

+4

¿Habría otro registro que debería verificar (estoy en Ubuntu)? – Geesu

+0

@Geesu: check/var/log/syslog – mitchus

0

En mi caso fue un bloqueo (AV). Incluso con GDB adjunto no pude detectar esta violación.
Espero que ayude

1

Es posible que el proceso haya coincidido con el tiempo de CPU ulimit. Compruebe con ulimit -a desde el entorno donde el proceso se inicia realmente si "hora de CPU" se establece en algo distinto de "ilimitado"

+0

¿No causaría eso un error de segmentación? ¿No es eso un desbordamiento de búfer? – yash101

+0

@ yash101 ¿por qué causaría segfault? La falla de segmentación es cuando uno accede a la memoria de una manera que no está permitida. No tiene nada que ver con el tiempo de CPU. –

+0

¿Cuándo hice ese comentario y por qué? ¡No tiene sentido! ¡Siento que algo cambió! – yash101

Cuestiones relacionadas