Как отладить многопоточный зависший процесс в Linux? - PullRequest
5 голосов
/ 05 сентября 2011

Многопоточное приложение зависает и не отвечает ни на какие команды.Я безуспешно пробовал следующие вещи:

  1. Присоединить процесс к gdb (ошибка: (gdb) присоединить 6026 Присоединение к процессу 6026 ptrace: операция не разрешена.)
  2. gstack (gstackпросто зависает вот так)

Есть ли хороший способ отладки этого процесса?

Ответы [ 2 ]

6 голосов
/ 05 сентября 2011

Спасибо за ваш ответ. Проблема на уровне ядра. мы использовали echo t> / proc / sysrq-trigger, который регистрирует стек всех запущенных процессов в / var / log / messages. Эта трассировка стека помогла проанализировать проблему.

Из трассировки стека файловая система отправила какое-то ожидаемое событие от имени процесса приложения другому процессу (который находится в несуществующем состоянии) и ожидает ответа в течение неопределенного времени. Что приводит к зависанию.

1 голос
/ 05 сентября 2011

Скорее всего, кто-то еще уже отслеживает этот процесс. Чтобы узнать, кто это делает, посмотрите на файловую систему proc.

cat /proc/6026/status|grep TracerPid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...