[freebsd] сигнал для процесса

Yaroslav Shvets yaroslav at shvets.name
Thu Jul 1 10:38:36 EEST 2021


Hello Eugene.

On Wed, 30 Jun 2021, 22:32, you wrote:

> 30.06.2021 12:23, Yaroslav Shvets пишет:
>> Hello.
>>
>> В /usr/local/etc/rc.d есть скрипт, который запускает некий процесс.
>> При получении сигнала SIGHUP и скрипт, и процесс отдельно умеют
>> этот сигнал обрабатывать.
>> Т.е. выполняют отвественную за это логику.
>>
>> Если запуск скрипта, а соотвественно и последующий запуск процесса произошел
>> во время загрузки системы, то и скрипт, и процесс на SIGHUP не реагируют.
>> Т.е. процессы в памяти присутствуют, но на kill -HUP <pid> не реагируют.
>> Если скрипт в /usr/local/etc/rc.d запускается из шелла, то и скрипт,
>> и процесс вполне реагируют на приходящие сигналы.
>>
>> Как мне кажется, дело не в другом окружении.
>> Что я упустил?
>
> Когда процесс запускается, он наследует от родителя его окружение.
> В это окружение входит также состояние реакции процесса на сигналы,
> включая игнорирование/блокировку блокируемых сигналов.
>
> Некоторые процессы имеют такой баг: они устанавливают свои обработчики-реакции
> на сигналы, но ошибочно предполагают, что сигналы SIGHUP при запуске не заблокированы,
> а это предположение не всегда верно и если процесс устанавливает обработчик для сигнала,
> он должен озаботиться явной разблокировкой его.
>
> Например, такой баг есть в squid, я его им зарепортил в 2016-м с простым исправлением, но без какой-либо реакции вообще.
> https://bugs.squid-cache.org/show_bug.cgi?id=4494
> https://bugs.squid-cache.org/attachment.cgi?id=3337
>
> В FreeBSD можно посмотреть состояние блокировок сигналов запущенного процесса:
>
> # ps -wo pid,sigmask,sigignore,command -p 53667
>  PID BLOCKED  IGNORED COMMAND
> 53667       0 18788002 /usr/local/sbin/squid -f /usr/local/etc/squid/squid.conf
>
> В данном случае у squid нет заблокированных сигналов и есть игнорируемые.
>
> Предлагаю сравнить в вашем случае это у процессов, запущенных при загрузке или вручную,
> будет ли разница?
>
> И если не секрет, что за процесс?

Все так и есть. Процесс иногда в состоянии с флагом игнорировать SIGHUP.

> И если не секрет, что за процесс?
Это старый, но модифицированный вариант vpnc.

Спасибо за объяснение сути проблемы!

-- 
Yaroslav Shvets


More information about the freebsd mailing list