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

Evgeny Sinelnikov =?iso-8859-1?q?sin_=CE=C1_altlinux=2Eru?=
Пт Апр 4 22:00:03 MSD 2008


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

2008/4/3 Stanislav Ievlev <inger на altlinux.org>:
> On Wed, Apr 02, 2008 at 09:59:20PM +0400, Evgeny Sinelnikov wrote:
>
>
> > Здравствуйте,
>  >
>  > 2008/4/2 Michael Shigorin <mike на osdn.org.ua>:
>  >
>  > >        Здравствуйте.
>  > > Это мне второй раз показалось или текущие installer
>  > > с installer-desktop из 4.0/branch подвисают после вывода
>  > > надписи "Killing all remaining processes" (которую бы тоже
>  > > недурно облагородить -- вроде ж было как-то иначе уже)?
>  > >
>  >
>  > Совершенно верно, причём проблема довольно занятная (скорее всего из
>  > непонятных ядерных глюков, как в quake3 на наших 2.6.18 ядрах - #14027). Как
>  > раз сейчас пытаюсь понять причину... Проблема в loop_change_fd() вызываемой
>  > из init в stage2 из пакета installer-stage2. Причём не совсем понятно зачем
>  > вообще это нужно. Тем не менее, если этот вызов убрать, оно всё равно
>  > падает, но уже после sysreboot()... Падает оно вроде всегда в
>  > Kernel panic - not syncing: Attempted to kill init!
>  loop_change_fd нужен для того чтобы дали отмонтировать /mnt/destination ...
>  Причём иногда это по неведомым мне причинам всё-равно не спасает ... ядро как-то себя не очень адекватно ведёт.
>
>  Если это очень хорошо воспроизводится на какой-нибудь машине, то было бы
>  очень здорово, если бы имеющие её не поленились вставить побольше отладки в install2-init.
>

Не поленились :) Дело в общем-то оказалось давнее. Ошибок было две:
1) во время копирования образа в память он затирался и работал на
каком-то остаточном ходу... волшебная функция sparse в начальных
скриптах запуска stage2 делала своё грязное дело довольно давно...
из-за этого иногда (а у меня на тесте в VirtualBox постоянно) не
работал loop_change_fd()
2) После вызова reboot(), в случае появленения сигнала ECHILD, init не
дожидался момента завершения и падал из-за чего появлялся:
Kernel panic - not syncing: Attempted to kill init!

Исправленный вариант installer можно найти здесь:
http://git.etersoft.ru/people/sin/packages/installer.git/

Единственное, что осталось непонятным - это отмонтирование
/mnt/destination, в котором оказываются занятыми /mnt/destination/dev
и, при наличии, /mnt/destination/home... Комментарий по поводу
MNT_DETACH вероятно стоит раскомментировать... Есть ещё какие-нибудь
по этому поводу предложения?

-- 
Sin (Sinelnikov Evgeny)


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