对于消息类系统而言任何阻塞都会导致整个系统的消息被卡住造成系统假死的问题。今天来说说串口导致系统卡死的问题
1.问题说明:
路由器在挂机过程中,偶现串口卡住,web页面进不去,有限终端拿不到地址的现象。
2.问题分析:
(1)通过ssh进入串口,通过netstat -nap查看网络状态,发现多个进程的socket接送队列阻塞。
(2)查看进程的堆栈信息,发现都被tty_write_lock锁住。
3)tty_write_lock与UART的软件流控有关,关闭软件流控之后问题解决。
(在etc/profile 中加入stty -F /dev/ttyS0 -ixon -ixoff)关闭UART流控。
结尾:
最好能在内核驱动中关闭串口的流控因为stty命令只是临时改变当串口输入数据后会自动变成xoff。