С++ Linux Binary завершена сигналом SIGKILL - почему? (загружается в GDB) - программирование
Подтвердить что ты не робот

С++ Linux Binary завершена сигналом SIGKILL - почему? (загружается в GDB)

Итак, я запускаю свое приложение на С++ в GDB, и когда он завершает работу, я в основном получаю:

[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)

Я буквально понятия не имею, почему это происходит, почему я не могу сделать обратную линию, чтобы увидеть, как она вышла? У кого-нибудь есть идеи? Это никогда не должно заканчиваться: (

Спасибо!

4b9b3361

Ответ 1

Я буквально понятия не имею, почему это происходит,

Это обычно означает, что либо

  • какой-либо другой процесс выполнил kill -9 <your-pid> или
  • Ядро OOM killer решил, что ваш процесс потребляет слишком много ресурсов и завершает его (фактически, ядро ​​выполнило kill -9 для него). Вы должны посмотреть в /var/log/messages (/var/log/syslog на вариантах Ubuntu) для следов этого - ядро ​​обычно регистрирует сообщение, когда оно выполняет OOM какой-то процесс.

почему я не могу сделать обратную линию, чтобы увидеть, как она вышла?

Потому что для того, чтобы увидеть обратную линию, процесс должен существовать. Если он не существует, он не имеет стека и поэтому не может иметь обратную трассировку.

Ответ 2

Возможно, что процесс перешел в процессорное время ulimit. Обратитесь к ulimit -a из среды, где процесс фактически запущен, если для параметра "время процессора" установлено значение "неограниченное"

Ответ 3

В моем случае произошел сбой (AV). Даже при подключении GDB я не мог поймать это нарушение.
Надеюсь, что это поможет.