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

Stanislav Ievlev =?iso-8859-1?q?inger_=CE=C1_altlinux=2Eorg?=
Вт Апр 15 11:42:36 MSD 2008


On Tue, Apr 15, 2008 at 02:13:14AM +0400, Evgeny Sinelnikov wrote:
> 2008/4/14 Stanislav Ievlev <inger на altlinux.org>:
> > On Mon, Apr 14, 2008 at 04:00:38AM +0400, Evgeny Sinelnikov wrote:
> >  > >  Что касается финального loop_change_fd, то сдаётся мне в свете
> >  > >  накопившегося опыта стоит попробовать следующее:
> >  > >  * copy+reexec init'a с tmpfs (тогда точно не будет никаких зависаний ибо
> >  > >  файл процесса уже будет вне опасности)
> >  > >  * по окончании работы pivot_root в tmpfs (откуда был запущен) далее kill и umount.
> >  > >  После второй операции возможно и повторный loop_change_fd не пригодится.
> >  > >
> >  > >  Мы один раз уже пробовали эту схему, но тогда видать не дотумкали насчёт
> >  > >  ожидания убиения процессов, увидели что не получается отмонтирование и
> >  > >  отказались от неё. Стоит попробовать ещё разок.
> >  > >
> >  >
> >  > Да, это интересная идея... Завтра проверю...
> >  А я тогда подожду результатов ;)
> >  зависание видимо было из-за того что несмотря на статичность файла init,
> >  он был загружен при помощи mmap и не вся его часть попала с loop в память.
> >
> 
> Что-то оно сегодня не всё успелось... я собрал, но не опробовал
> вариант первичного перенесения init в tmpfs. По итоге стало ясно, что
> вариант переносить init по завершении работы выглядит разумнее...
А по мне так проще в начале, чтобы код менее
ветвистым был.
Так при повторном запуске половину программы придётся пропускать, а иначе только один вызов функции.

Кстати вариант с SIGCHILD стал заметно дольше ожидать киляния
процессов ... устанавливал только один раз, ожидание было порядка трёх
секунд, по началу даже подумал что опять зависло. 

Или надо это ускорять или делать рисование точек интенсивнее.




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