我们的一个系统上的 PPPD 出现了问题,我们有一台 PC,它用于通过拨号连接与远程站点通信,调制解调器既可以连接到站点,站点也可以拨回。目前我遇到一个问题,有时站点以太拨入或我们拨出,并且它连接上了,但随后调制解调器被阻止并向 kern.log 抛出错误。
Aug 26 14:23:57 TM-SCADA kernel: [191233.503745] INFO: task pppd:8142 blocked for more than 120 seconds.
Aug 26 14:23:57 TM-SCADA kernel: [191233.503750] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Aug 26 14:23:57 TM-SCADA kernel: [191233.503753] pppd D ffffffff8180cb40 0 8142 1 0x00000000
Aug 26 14:23:57 TM-SCADA kernel: [191233.503759] ffff8800ac1f5dc8 0000000000000086 ffff8800ac1f5fd8 00000000000137c0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503765] ffff8800ac1f4010 00000000000137c0 00000000000137c0 00000000000137c0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503770] ffff8800ac1f5fd8 00000000000137c0 ffffffff81c13020 ffff880135df5b80
Aug 26 14:23:57 TM-SCADA kernel: [191233.503775] Call Trace:
Aug 26 14:23:57 TM-SCADA kernel: [191233.503784] [<ffffffff8166ba29>] schedule+0x29/0x70
Aug 26 14:23:57 TM-SCADA kernel: [191233.503790] [<ffffffff813db005>] tty_ldisc_ref_wait+0x65/0xb0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503796] [<ffffffff813f3061>] ? uart_ioctl+0xd1/0x1c0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503801] [<ffffffff81076960>] ? wake_up_bit+0x40/0x40
Aug 26 14:23:57 TM-SCADA kernel: [191233.503806] [<ffffffff813d3fa0>] tty_ioctl+0x2c0/0x9a0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503810] [<ffffffff811d0549>] ? fcntl_setlk+0x69/0x200
Aug 26 14:23:57 TM-SCADA kernel: [191233.503815] [<ffffffff81195f79>] do_vfs_ioctl+0x99/0x330
Aug 26 14:23:57 TM-SCADA kernel: [191233.503820] [<ffffffff81195212>] ? do_fcntl+0x232/0x410
Aug 26 14:23:57 TM-SCADA kernel: [191233.503823] [<ffffffff811962b1>] sys_ioctl+0xa1/0xb0
Aug 26 14:23:57 TM-SCADA kernel: [191233.503829] [<ffffffff81674e69>] system_call_fastpath+0x16/0x1b
系统日志跟踪在“串行连接建立”处停止。
Aug 28 06:00:03 TM-SCADA pppd[10358]: pppd 2.4.5 started by root, uid 0
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (NO CARRIER)
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (NO DIALTONE)
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (ERROR)
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (NO ANSWER)
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (BUSY)
Aug 28 06:00:04 TM-SCADA chat[10360]: abort on (Username/Password Incorrect)
Aug 28 06:00:04 TM-SCADA chat[10360]: send (atz^M)
Aug 28 06:00:04 TM-SCADA chat[10360]: expect (OK)
Aug 28 06:00:04 TM-SCADA chat[10360]: atz^M^M
Aug 28 06:00:04 TM-SCADA chat[10360]: OK
Aug 28 06:00:04 TM-SCADA chat[10360]: -- got it
Aug 28 06:00:04 TM-SCADA chat[10360]: send (atx0^M)
Aug 28 06:00:04 TM-SCADA chat[10360]: expect (OK)
Aug 28 06:00:04 TM-SCADA chat[10360]: ^M
Aug 28 06:00:04 TM-SCADA chat[10360]: atx0^M^M
Aug 28 06:00:04 TM-SCADA chat[10360]: OK
Aug 28 06:00:04 TM-SCADA chat[10360]: -- got it
Aug 28 06:00:04 TM-SCADA chat[10360]: send (atdt0123456789^M)
Aug 28 06:00:04 TM-SCADA chat[10360]: expect (CONNECT/ARQ)
Aug 28 06:00:04 TM-SCADA chat[10360]: ^M
Aug 28 06:00:30 TM-SCADA chat[10360]: atdt0123456789^M^M
Aug 28 06:00:30 TM-SCADA chat[10360]: CONNECT/ARQ
Aug 28 06:00:30 TM-SCADA chat[10360]: -- got it
Aug 28 06:00:30 TM-SCADA pppd[10358]: Serial connection established.
我只找到了两种方法可以释放这种情况下调制解调器,第一种是关闭调制解调器然后再打开,第二种是删除串行锁定文件,然后发送 SIGKILL pppd。现在,如果调制解调器被锁定,我可以写入我们的软件来执行后者,但如果可能的话,我宁愿首先阻止它锁定。我之所以把这个问题放在 askubuntu 上,是因为我们以前使用过 OpenSuse,从来没有遇到过问题,诚然,那是 11.2 或更早的版本,所以它仍然是旧内核,但我想我还是先在这里问一下。
任何有关参观地点的建议都将受到欢迎。
答案1
您在 kern.log 中看到的消息表明您正在使用的内核中有一个错误,可能是这个:https://bugzilla.kernel.org/show_bug.cgi?id=16206。