Bug 11193 - panic流程中低概率出现dump_stack卡死,因为拿不到logbuf_lock锁。
Summary: panic流程中低概率出现dump_stack卡死,因为拿不到logbuf_lock锁。
Status: NEW
Alias: None
Product: ANCK 5.10 Dev
Classification: ANCK
Component: general/others (show other bugs) general/others
Version: 5.10.y-16.2
Hardware: x86_64 Linux
: P3-Medium S2-major
Target Milestone: ---
Assignee: banye97
QA Contact: shuming
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-10-08 10:35 UTC by zcl438031693
Modified: 2024-10-10 09:13 UTC (History)
2 users (show)

See Also:


Attachments
panic流程卡死在logbuf_lock锁上。 (96.95 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2024-10-08 10:35 UTC, zcl438031693
Details
问题原因 (153.71 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2024-10-08 23:10 UTC, zcl438031693
Details
logbuf_lock死锁,问题原因 (228.92 KB, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
2024-10-09 10:31 UTC, zcl438031693
Details

Note You need to log in before you can comment on or make changes to this bug.
Description zcl438031693 2024-10-08 10:35:18 UTC
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:
   其它信息详见附件。
Comment 1 zcl438031693 2024-10-08 23:10:47 UTC
Created attachment 1213 [details]
问题原因

问题原因清楚了,如文档中图片所示。
Comment 2 zcl438031693 2024-10-09 10:31:34 UTC
Created attachment 1214 [details]
logbuf_lock死锁,问题原因

logbuf_lock死锁,问题原因,更新。
Comment 3 zcl438031693 2024-10-09 11:28:57 UTC
该问题应该是 https://gitee.com/anolis/cloud-kernel/pulls/1587
这笔提交引入的bug。

请帮忙确认一下,这笔提交解决的重复释放锁的问题,是否只有在 打开了crash_kexec_post_notifiers = true开关后才会触发 ?
Comment 4 xiangzao alibaba_cloud_group 2024-10-09 17:12:39 UTC
(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?
Comment 5 zcl438031693 2024-10-10 09:13:13 UTC
(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锁问题发生的场景?