[Comm] Re: /sbin/ifup ppp0 - некорректная работа по Ctrl-C
Valentin Lavrinenko
=?iso-8859-1?q?lvu_=CE=C1_uaservice=2Ecom=2Eua?=
Ср Окт 19 17:49:41 MSD 2005
Hi!
Michael Shigorin wrote:
>https://bugzilla.altlinux.org/show_bug.cgi?id=635
>https://bugzilla.altlinux.org/show_bug.cgi?id=7519
>
>
Эти я видел, они - не совсем то, по-моему. И на самом деле "моя" бага -
совсем не та, что RH #40585 - см. ниже.
>Я имею в виду "по состоянию на текущий момент". Разумеется,
>в 2.4 они и были и хорошо бы проблему исправить в updates.
>
>
На текущий момент - имеется в виду Сизиф и ALM 3.0? Мне сейчас
абсолютно не с руки пользоваться нестабильными вариантами. И так
геморроя хватает :)
>>Попробовал :( Бага, похоже присутствует и там, т.е., та, что в
>>RH багзилле - это, наверное, чуть-чуть другая. Хотя я в этом и
>>не уверен, так как в целом оно не особо работает в АЛЬТе.
>>
>>
>
>Эх. Мож подсобите с тем, чтоб работало?.. Чем смогу -- помогу.
>
Я неправильно выразился. Во фразе "оно не особо работает" под "оно"
следует понимать ppp-watch из RedHat.
На данный момент ситуация в моих изысканиях следующая. Бага проистекает от
того, что по получению SIGINT ppp-watch пытается определить pid нужного
pppd из файла /var/run/ppp-$device.pid, и, если этого файла нету, просто
вываливается
с кодом 35. На самом же деле pppd, похоже, создает этот файл только
тогда, когда соединение
между модемами уже установлено, т.е. уже отработал chat. Соответственно,
если нажать Ctrl-C,
пока chat еще не отработал, pppd спокойненько пойдет выполняться дальше.
Я попытался обойти это дело следующим образом: добавил в ppp-watch.c
кусочек, который,
если не удалось получить pid из файла, ищет нужного pppd в /proc,
анализируя командные
строки. Все бы ничего, только полученный SIGTERM не убивает pppd. Он
хотя и говорит, что
Terminating on signal 15, но chat не убивает, и продолжает работать
дальше, подвисая через какое-то
время, причем вмертвую. Посылка синала отрицательному pid'у тоже не
помогает.
Похоже, надо пытаться найти нужный chat (и другие процессы, запущенные
найденым нами pppd),
и убивать их по отдельности. Или лезть править pppd :( Я еще попробую
завтра поискать в сети
сведения об этом поведении pppd.
Подробная информация о списке рассылки community