Возможно ли (в программе на C или C++, работающей под управлением Linux на архитектуре с 64-разрядной архитектурой) для потока A, чтобы прочитать значение регистра счетчика программ потока B, не требуя каких-либо специальных инструментов для кодирования кода B?Можно ли читать счетчик программ другой нити?
(Я понимаю, что это странная вещь, которую нужно делать, желание появляется только потому, что мне любопытно, может ли поток A использовать это, чтобы обнаружить, что поток B застрял в неудавшемся системном вызове, как описано here)
Для данного процесса проверка всех TID, перечисленных в каталоге задач, будет достаточной, если цель состоит в том, чтобы найти ** любую ** застрявшую нить - «TID X кажется застрявшим в значении ПК Y». Значение TID действительно не имеет значения. Но это не позволит избежать ложных срабатываний, если значение ПК для «нормального» места для блокировки этого потока. –
Да. У ОП может быть проблема XY, которая происходит здесь, поскольку желаемый механизм на самом деле не является хорошим подходом к проблеме. Но я все же думал, что стоит ответить, потому что есть решение для запрошенного механизма. –
R .. согласился с тем, что у меня, вероятно, есть проблема с XY ... мне бы очень хотелось, чтобы ядро «oops» полностью разрушило мой процесс, вместо того, чтобы заставить мой другой поток прыгать через обручи, чтобы определить, нить была парализована навсегда, и если это должно привести к сбою самого процесса, чтобы перезапустить процесс. Но маловероятно, что существует средство для контроля этого поведения. :( –