[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