[devel] q: installer: Killing all remaining processes (forever)

Evgeny Sinelnikov =?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Ср Апр 16 02:02:08 MSD 2008


2008/4/16 Evgeny Sinelnikov <sin at altlinux.ru>:
> 2008/4/16 Dmitry V. Levin <ldv at altlinux.org>:
>
> > On Tue, Apr 15, 2008 at 09:42:02PM +0400, Evgeny Sinelnikov wrote:
>  >  > 2008/4/15 Dmitry V. Levin <ldv at altlinux.org>:
>  >  [...]
>  >
>  > > >  У меня был один простой аргумент: ECHILD не происходит.
>  >  > >  Я сделал коммит, который ждёт ECHILD:
>  >  > >  http://git.altlinux.org/people/ldv/packages/?p=installer.git;a=commitdiff;h=0.4-alt12-1-g713c354
>  >  > >  На практике (в 0.4-alt13) это приводит к таймауту после 20 секунд ожидания.

[...]

>  >
>  >  > По поводу же ожидания в 20 секунд... Совершенно непонятна логика...
>  >  > ведь чтобы дождаться ECHILD не стоит отрывать обработку SIGCHILD...
>  >
>  >  Логика такая: поскольку не все процессы после рассылки SIGKILL
>  >  завершаются, дожидаться появления ECHILD бесполезно.
>  >
>
>  Логика, как мне кажется, ошибочна... ECHILD приходит, когда последний
>  процесс умирает. Приход именно этого сигнала выдавал предупреждение,
>  когда не до конца ожидался момент умирания всех процессов перед
>  отмонтированием. По сути получается так, что при умирании последнего
>  процесса, цикл в обработчике сигнала вынужден получить такую ошибку.
>  Поэтому отключение обработчика сигнала перед циклом ожидания
>  неверно... Это же подтверждено не практике. В моём случае стоит
>  ожидание только по этому сигналу, иначе цикл в killall() у меня вообще
>  не завершится... Но он завершается, а следовательно ECHILD, как и
>  ожидается, приходит...
>

Просмотрел текущие изменения по поводу "Reduce ECHILD wait timeout to
5 seconds" - 0706e8db880cc8a650fb0dda7427079a09a9eb11.
Думаю, что уменьшение времени здесь конечно помогает, но это опять
игра race conditions... На самом деле достаточно убрать
chld_handler(0); И время можно будет ставить сколь угодно долгим...


-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Devel