Конфигурация:1. Модемы (разные) включены в Moxa NPort 5610-16, есть драйвер "npreal", добавляющий в систему виртуальные порты /dev/ttyr00...ttyr0f (16 штук). По сути, вроде, обычные порты cu -s 115200 -l /dev/ttyr0d без проблем, я общаюсь с модемами.
2. Linux (Slackware, на базе 10.2), ядро 2.6.19.1 (скачал вчера с горя, до этого было 2.6.13).
3. mgetty-1.1.35.
4. pppd вчера взял по rsync и собрал сам, до этого баловался с предыдущими версиями...
Ситуёвина:
Я подключаюсь к модемному пулу, сразу же отключаюсь, в логе вижу:
Using interface ppp2
Connect: ppp2 <--> /dev/ttyr0d
PAP peer authentication succeeded for kay
local IP address 10.118.224.24
remote IP address 10.118.225.1
LCP terminated by peer (^X4^PM-H^@<M-Mt^@^@^@^@)
Connect time 0.2 minutes.
Sent 19452 bytes, received 2596 bytes.
Connection terminated.
Modem hangup
Снова подключаюсь, выполняю ping www.ru, tracert www.ru (работу какую-то имитирую), прерываю их, отключаюсь. В логе теперь следующее:
Using interface ppp2
Connect: ppp2 <--> /dev/ttyr0d
PAP peer authentication succeeded for kay
local IP address 10.118.224.24
remote IP address 10.118.225.1
LCP terminated by peer (9M-1-M-$^@<M-Mt^@^@^@^@)
Connect time 0.3 minutes.
Sent 986 bytes, received 3550 bytes.
Connection terminated.
И ВСЁ!!! Строчки "Modem hangup" нет. pppd висит в памяти и не убивается kill-ом и kill -9, kill -15, более того, пока не пытаешься его убить, ps xa показывает, например:
3311 ttyr0d Rs+ 0:00 pppd (всегда 0:00)
и он не грузит систему особо, а стоит попытаться - время начинает тикать, и top после этого показывает загрузку под 100% pppd.
Это какой-то кошмар. Сервер серьёзный, блин, не могу я его так часто перезагружать, на меня уже люди косятся криво... :(
Ядро 2.6.13 после такого "неудачного убийства" по init 6 или reboot не могло перезагрузиться в течение нескольких часов (через 2 часа я нажал Reset). 2.6.19.1 перезагружается, правда, пишет что-то про предположительно зависшие процессы и как бы какое-то время ждёт.
mgetty запускается через /etc/inittab.
Опции и уровни debug пробовал всякие в самых различных комбинациях. Пробовал через опцию disconnect посылать на модем +++ OK ATH0 OK... persist, nopersist, updetach, nodetach, cdtrcts, crtscts, passive... долго перечислять :)
Меня интересует скорее теоретический подход к проблеме сейчас:
Почему это в принципе может происходить?!!!
На худой конец - подскажите хоть способ какой-нибудь наверняка убить pppd...