So I fire up my c++ application in GDB, and when it quits, I basically get:
[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)
I literally have no idea why this is occuring, why can't I do a backtrace to see how it exited? Anyone have any ideas? It should never end :(
Thanks!
The SIGKILL signal is used to cause immediate program termination. It cannot be handled or ignored, and is therefore always fatal.
SIGKILL cannot be blocked or ignored ( SIGSTOP can't either). A process can become unresponsive to the signal if it is blocked "inside" a system call (waiting on I/O is one example - waiting on I/O on a failed NFS filesystem that is hard-mounted without the intr option for example).
I literally have no idea why this is occuring,
This usually means that either
kill -9 <your-pid>
, orkill -9
for it). You should look in /var/log/messages
(/var/log/syslog
on Ubuntu variants) for traces of that -- the kernel usually logs a message when it OOMs some process.why can't I do a backtrace to see how it exited?
Because in order to see a backtrace, the process must exist. If it doesn't exist, it doesn't have stack, and so can't have backtrace.
If you are using Unix/Linux you should also be able to type dmesg
on your terminal and see the cause of the process terminating. In my case it was indeed OOM. here is a screenshot of my kernel log shortly after the termination
It is possible that the process ran into the cpu time ulimit. Check with ulimit -a from the environment where the process is actually started if "cpu time" is set to anything other than "unlimited"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With