2012-06-07 22 views
5

Estoy ejecutando un programa que falla con una interrupción de cancelación (código de error 12). Para depurar el error, estoy ejecutando valgrind, pero cada vez que lo ejecuto, valgrind se bloquea con un mensaje de "Muerto" y nada más (el resumen del montón de mensajes finales, etc. no aparece). No puedo encontrar nada en google o SO sobre esto y espero que alguien pueda arrojar algo de luz sobre las causas de este error y cómo depurarlo.valgrind mensaje "Asesinado"

¡Se agradece cualquier ayuda!

+1

[Esta publicación en el foro] (http://www.linuxquestions.org/questions/slackware-14/valgrind-crashes-at-start-up-with-killed-error-message-437863/) parece decir " Killed "aparece sin importar cómo se ejecuta valgrind, ¿es lo mismo en tu caso? Pruébalo con 'valgrind --help'. – Collin

+0

No, valgrind funciona bien en otras situaciones. Lo usé para depurar un error de memoria anterior en la misma computadora el día de hoy. Solo sucede en este caso particular. – Jack

Respuesta

5

Creo que su proceso probablemente sea aniquilado por el sistema Out Of Memory del kernel - cuando el sistema se quede sin memoria que matará a un proceso de una manera que no puede atraparse, por lo que valgrind está saliendo sin decir cualquier cosa. Probablemente su programa utiliza mucha memoria y, cuando se ejecuta en valgrind donde se necesita memoria adicional para seguir la definición de la memoria, no hay suficiente memoria disponible y el proceso de valgrind (sin duda muy grande) se está matando.

Si estoy en lo cierto, necesitará una máquina con más memoria, o al menos más intercambio, para poder ejecutar su programa en valgrind.

+0

Resultó que había una gran cantidad de memoria asignada repetidamente pero que no estaba totalmente desasignada en un bucle, lo que causaba un uso de memoria mucho mayor de lo que pensaba. Gracias por la visión! – Jack

+0

¿Hay alguna manera de confirmar si valgrind está siendo asesinado solo por problemas de memoria? –

0

Esto también puede suceder si su máquina está utilizando una asignación de memoria no estándar, por ejemplo, utilizando un coprocesador (GPU, FPGA) que tiene su propia memoria física a la que se accede en el espacio de memoria del procesador.

En nuestro caso, el vendedor tuvo que arreglar su marco para trabajar con valgrind.