LINUX.ORG.RU
решено ФорумAdmin

Зависший процесс. Вывод strace.

 


0

1

Добрый день. Подскажите пожалуйста куда копать. Есть проблема с зависшим процессом. В результате выполнения php скрипта запускается процесс программы вывода диалогов pinentry. Программе pinentry просто передается один агрумент(пароль),чтобы его она его использовала для шифрования утилитой gnupg. Этот процесс(pinentry) начинает жрать cpu100%.

Вывод strace

#strace -vfp  16325
Постоянно вылят такие системные вызовы
rt_sigaction(SIGTSTP, {0x1, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, {0x7f1df33b5d50, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, 8) = 0
poll([{fd=0, events=POLLIN}], 1, 0)     = 1 ([{fd=0, revents=POLLHUP}])
rt_sigaction(SIGTSTP, {0x7f1df33b5d50, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, NULL, 8) = 0
rt_sigaction(SIGTSTP, {0x1, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, {0x7f1df33b5d50, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, 8) = 0
rt_sigaction(SIGTSTP, {0x7f1df33b5d50, [], SA_RESTORER|SA_RESTART, 0x7f1df305c1e0}, NULL, 8) = 0
read(0, ""..., 1)                       = 0

Из этого понял,что системный вызов sigaction посылает процессу сигнал SIGTSTP для приостановки выполнения процесса.

Но приведенный выше блок циклично повторяется в выводе stracer пока не убить процесс вручную.

Вопрос: Как определить,почему процесс не завершается и вообще что происходит?

Дистр: Gentoo

Спасибо.



Последнее исправление: atomlab (всего исправлений: 1)

Все проблема решена. Это косяк GnuPG в версии 2.х. Он не может передовать pinentry прямым текстом пароли. Pinentry в обязательном порядке открывает диалог и ждет ручного ввода. Поэтому процесс pinentry зависал и ждал ввода.

http://php.net/manual/ru/function.gnupg-addsignkey.php

Комментарий в самом низу.

Решил установкой GnuPG v1.4.13.

atomlab
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.