[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