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

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Ср Апр 16 00:00:00 MSD 2008


On Tue, Apr 15, 2008 at 09:42:02PM +0400, Evgeny Sinelnikov wrote:
> 2008/4/15 Dmitry V. Levin <ldv на 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 секунд ожидания.
> 
> Кроме того на практике (в 0.4-alt13) loop_change_fd() на 2.6.24 всё
> ещё виснет... Я полагаю, что это влияние оптимизации кода ядра....
> Процесс не весь загружен в память, а после переброски файлового
> дескриптора на файл с нулями грузить его уже неоткуда...

Это вполне вероятно, поэтому reexec, видимо, нужно вернуть.

> По поводу же ожидания в 20 секунд... Совершенно непонятна логика...
> ведь чтобы дождаться ECHILD не стоит отрывать обработку SIGCHILD...

Логика такая: поскольку не все процессы после рассылки SIGKILL
завершаются, дожидаться появления ECHILD бесполезно.

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

Реализация sleep() следит за этими прерываниями.

> Объединённый и исправленный вариант доступен здесь:
> http://git.etersoft.ru/people/sin/packages/installer.git/
> 
> В этот релиз вошло изменение решающее проблему loop_change_fd() на
> 2.6.24 путём переброски /sbin/init в память на начальном этапе
> установки. Надеюсь, это окончательный вариант исправлений...

Не стоит на это надеяться. ;)


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20080416/a3ca04e7/attachment.bin>


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