之前开发的抓包模块上线后有客户反馈有丢包问题,这两天在定位这个丢包问题,抓包模块由我和另一名“队友”负责,我负责底层抓包开发,他负责接收处理。在测试丢包问题的时候,他遇到一个板子连不上的情况,问我咋回事,刚好看到了log打印一行,
[27468.016028] BUG: soft lockup - CPU#1 stuck for 22s! [hagnatsd:1782] HELLO! BOOT0 is starting! boot0 version : 4.0.0 rtc[1] value = 0x00010000
一看就是内核软锁死,然后系统重启了。这个问题比较严重,如果模块有问题不影响系统运行还算小事,但系统挂了那就算大事了。当时也是一头雾水,用了那么久,怎么突然跑出来这样的问题。看问题应该是代码里面原子锁的使用问题,导致系统锁死,代码比较多,一时半会儿又走读不过来,于是就尝试复现这个问题。瞎搞了两个小时, 功夫不负有心人 (⊙_⊙) ,终于又出现了一次, 同样是锁死
[ 688.008033] BUG: soft lockup - CPU#0 stuck for 22s! [quickstart:2532] [ 723.] INFO: rcu_preempt self-detected stall on CPU [ 723.] INFO: rcu_preempt detected stalls on CPUs/tasks: { 0} (detected by 3, t=60002 jiffies) [ 723.] INFO: Stall ended before state dump start [ 723.] Backtrace for cpu 0 (current): [ 723.] [ 723.] sending IPI to all other CPUs: [ 723.] IPI backtrace for cpu 2 [ 723.] IPI backtrace for cpu 1 [ 723.] IPI backtrace for cpu 3 [ 723.] IPI backtrace for cpu 5 [ 723.] IPI backtrace for cpu 7 [ 723.] IPI backtrace for cpu 6 [ 723.] IPI backtrace for cpu 4 [ 760.] BUG: soft lockup - CPU#4 stuck for 22s! [swapper/4:0] [ 787.] CIFS VFS: Server 172.25.1.90 has not responded in 120 seconds. Reconnecting... [ 903.] INFO: rcu_preempt self-detected stall on CPU [ 903.] INFO: rcu_preempt detected stalls on CPUs/tasks: { 0} (detected by 6, t= jiffies) [ 903.] INFO: Stall ended before state dump start [ 903.] Backtrace for cpu 0 (current): [ 903.]
于是分析了自己的操作步骤,将代码流程分开,一步一步测试,最终问题定位到一处代码BUG, 程序走到死循环导致外部的读写锁无法释放,修改后得以解决。
总结经验就是平常遇到这类问题一定要重视,千万不要放过,就算不能解决也要找boss聊一聊其它方案。不然等到了客户那边问题会更大,而且不在现场更不方便调试。其次就是仔细分析问题产生现象,尝试重现问题,再结合具体的代码流程分析,类似这种软锁死问题基本上就是自身代码逻辑问题,仔细走读代码,分析代码流程 一步一步测试,最终定位问题根源才会彻底解决问题。
今天的文章 遇到“BUG: soft lockup - CPU0 stuck for 22s”的解决思路分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/96381.html