Created attachment 1212 [details] panic流程卡死在logbuf_lock锁上。 Description of problem: panic流程中低概率出现dump_stack卡死,因为拿不到logbuf_lock锁。 详细的栈信息,详见附件。由于dump_stack没法打出信息,附件中的栈信息,是通过自己封装的直接打到串口的打印函数(类似early_printk)打出来的。 Version-Release number of selected component (if applicable): anolis 8.9 How reproducible: 直接编译anolis 8.9内核即可。 Steps to Reproduce: 1. 编译anolis 8.9内核;编译前修改panic.c,将crash_kexec_post_notifiers = false; 2. 在系统起来后,自动执行脚本echo c触发panic;在触发panic前,先将历史生成的vmcore删除,避免将系统盘写满。 3. 预计连续跑3天左右时间,能复现该问题,发现panic流程卡死。 Actual results: panic流程卡死在dump_stack()这一步。 前面的pr_emerg("Kernel panic - not syncing: %s\n", buf);这行代码是走过了的。 Expected results: panic流程顺利走完。 Additional info: 其它信息详见附件。
Created attachment 1213 [details] 问题原因 问题原因清楚了,如文档中图片所示。
Created attachment 1214 [details] logbuf_lock死锁,问题原因 logbuf_lock死锁,问题原因,更新。
该问题应该是 https://gitee.com/anolis/cloud-kernel/pulls/1587 这笔提交引入的bug。 请帮忙确认一下,这笔提交解决的重复释放锁的问题,是否只有在 打开了crash_kexec_post_notifiers = true开关后才会触发 ?
(In reply to zcl438031693 from comment #3) > 该问题应该是 https://gitee.com/anolis/cloud-kernel/pulls/1587 > 这笔提交引入的bug。 > > 请帮忙确认一下,这笔提交解决的重复释放锁的问题,是否只有在 打开了crash_kexec_post_notifiers = true开关后才会触发 ? 你好,看描述你的测试过程已经关掉了 crash_kexec_post_notifiers,并且也能触发这个bug?
(In reply to xiangzao from comment #4) > (In reply to zcl438031693 from comment #3) > > 该问题应该是 https://gitee.com/anolis/cloud-kernel/pulls/1587 > > 这笔提交引入的bug。 > > > > 请帮忙确认一下,这笔提交解决的重复释放锁的问题,是否只有在 打开了crash_kexec_post_notifiers = true开关后才会触发 ? > > 你好,看描述你的测试过程已经关掉了 crash_kexec_post_notifiers,并且也能触发这个bug? -------是的,该问题是关掉了crash_kexec_post_notifiers = false触发的,问题根因在附件文档《logbuf_lock死锁,问题原因》中描述了。 该问题是由 https://gitee.com/anolis/cloud-kernel/pulls/1587这个提交引入的,我想确认一下,https://gitee.com/anolis/cloud-kernel/pulls/1587这个提交想要解决的doule unlock logbuf_lock锁的问题,是不是只有在crash_kexec_post_notifiers = true时才存在? 可否详细描述一下doule unlock logbuf_lock锁问题发生的场景?