2016-09-15 5 views
5

процесс Python, висящий в futex():См StackTrace свисающих Python в futex (..., FUTEX_WAIT_BITSET_PRIVATE | ...)

[email protected]:~# strace -p 9042 
strace: Process 9042 attached 
futex(0x1e61900, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, NULL, ffffffff 

Я хочу видеть трассировку стека, если процесс висячим.

К сожалению Ctrl-C не работает :-(

Как можно видеть StackTrace, если Python зависает, как это?

+0

Просто прикрепите GDB к процессу, или запустить pstack, если вы установили его. Или 'kill -SEGV' процесс и изучить ядро, если вам не нужно поддерживать его в живых. – Useless

+0

@ Необязательно я хочу видеть стекю кода python. Не stacktrace интерпретатора Python (c-код). Я посмотрел на pstack, AFAIK pstack печатает последний. – guettli

ответ

4
  1. установки расширений GDB питона, если это необходимо для вашей системы (см here для например, или посмотреть на документации дистрибутива)
  2. присоединить GDB к вашему зависшему процессу
  3. запустить

    (gdb) py-bt 
    

    вместо регулярного bt, чтобы получить Python трассировку

+0

После выполнения команд 'ln -s ...' из другого ответа и запуска gdb с правами root он работал. Здесь другой ответ: http://stackoverflow.com/a/30430059/633961 – guettli