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

Evgeny Sinelnikov =?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Вт Апр 15 21:42:02 MSD 2008


Здравствуйте,

2008/4/15 Dmitry V. Levin <ldv at altlinux.org>:
> On Sun, Apr 13, 2008 at 01:54:05PM +0400, Stanislav Ievlev wrote:
>  > On Fri, Apr 11, 2008 at 05:18:23PM +0400, Evgeny Sinelnikov wrote:
>  > > Здравствуйте,
>  > >
>  > > 2008/4/8 Stanislav Ievlev <inger at altlinux.org>:
>  > > > Когда будете делать новые патчи - оповестите откуда брать.
>  > > >
>  > > >  Текущая версия по идее уже не выдаёт kernel panic, но неотмонтированный
>  > > >  /mnt/destination/dev всё ещё остаётся .
>  > > >
>  > > >
>  > > Проблема в том, что не корректно просто так добавлять sleep (1), нужно
>  > > ожидать сигнала ECHILD. После этого проблемы с /mnt/destination/dev
>  > > исчезают сами собой... Это раз.
>  > Это лучше с Дима скажет - у него были какие-то аргументы против ECHILD.
>
>  У меня был один простой аргумент: ECHILD не происходит.
>  Я сделал коммит, который ждёт ECHILD:
>  http://git.altlinux.org/people/ldv/packages/?p=installer.git;a=commitdiff;h=0.4-alt12-1-g713c354
>  На практике (в 0.4-alt13) это приводит к таймауту после 20 секунд ожидания.
>

Кроме того на практике (в 0.4-alt13) loop_change_fd() на 2.6.24 всё
ещё виснет... Я полагаю, что это влияние оптимизации кода ядра....
Процесс не весь загружен в память, а после переброски файлового
дескриптора на файл с нулями грузить его уже неоткуда...

По поводу же ожидания в 20 секунд... Совершенно непонятна логика...
ведь чтобы дождаться ECHILD не стоит отрывать обработку SIGCHILD...
Иначе оно и будет висеть те самые 20 секунд... Причём не совсем 20,
ведь sleep() всё-таки прерывается несколько раз по сигналу SIGCHILD от
тех самых процессов, которых стоит дождаться...

Объединённый и исправленный вариант доступен здесь:
http://git.etersoft.ru/people/sin/packages/installer.git/

В этот релиз вошло изменение решающее проблему loop_change_fd() на
2.6.24 путём переброски /sbin/init в память на начальном этапе
установки. Надеюсь, это окончательный вариант исправлений...

-- 
Sin (Sinelnikov Evgeny)


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