[devel] Просьба потестировать
Michael Pozhidaev
=?iso-8859-1?q?msp_=CE=C1_altlinux=2Eru?=
Пн Мар 22 15:55:18 MSK 2004
Sergey Pinaev <dfo на antex.ru> writes:
> hi.
> On Mon, 22 Mar 2004 16:58:28 +0600
> Michael Pozhidaev <msp на altlinux.ru> wrote:
>
> >> Подозреваю, что это из-за того, что mp у тебя не volatile.
> >>
> MP> Можно подробнее, не понял.
>
> Ну у тебя там описано pid_t mp глобально, и ему присваивается
> значение в одной функции, а используется в другой.
> Правда у тебя функции последовательно вызываются и ситуации,
> когда "вторая" вызовется в середине первой не возникнет, так
> что это, не причем.
> У тебя получается, что play() запускает дитё (mp), которое запускает
> дите (pp) и ждет его смерти. А stop() убивает mp и ждет смерти
> кого-нибудь с идентификатором группы как у mp. Соответственно,
> если в дите (mp) приехал сигнал "умри" он сразу из waitpid()
> вывалится, не дожидаясь, пока pp умрет. И pp окажется zombie,
> если я все правильно понимаю... =/
Судя по всему, так и происходит. Я думаю избавиться от этого путём убирания WNOHANG из вызова waitpid().
--
Best wishes. Michael Pozhidaev. E-mail: msp на altlinux.ru.
Tomsk state university.
Computer science department. (http://www.inf.tsu.ru)
Подробная информация о списке рассылки Devel