Как использовать сигнал sigusr1 или sigusr2 для сброса стека из другого потока - PullRequest
0 голосов
/ 20 апреля 2020

На платформе android я хочу сбросить стек других потоков, когда этот поток заблокирован длинной задачей. Я знаю, как создавать дамп стека с помощью libunwind в текущем потоке, но я хочу использовать обработчик SIGUSR1 или SIGUSR2 для дампа стека в другом потоке, используя libunwind, поэтому я выполнил следующие действия:

  1. Тема B регистрирует обработчик SIGUSR1 или SIGUSR2. В этом дескрипторе я использую libunwind для вывода текущего стека потоков.

  2. Поток A отправляет сигнал SIGUSR1 или SIGUSR2 в поток B. Поток B будет обрабатывать сигнал, отправленный из потока A, и сбрасывать стек.

Но я не могу получить стек, который описывает длинную задачу в потоке B, я получаю стек, описывающий, как вызывается обработчик сигнала.

Есть ли способ сбросить стек в заблокированном потоке с помощью libunwind?

Спасибо !!!

...