首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spinlock锁锁怀疑原因

spinlock锁锁怀疑原因
EN

Stack Overflow用户
提问于 2014-02-04 07:10:01
回答 1查看 6.3K关注 0票数 3

以下信息的原因可能是什么:

BUG:怀疑CPU#0,sh/11786上的自旋锁

锁: kmap_lock+0x0/0x40,.magic: dead4ead,.owner: sh/11787,.owner_cpu: 1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-20 12:32:00

区块引号错误:怀疑CPU#0,sh/11786上的自旋锁

这表示CPU0处于锁定状态,线程/进程将为sh (或由sh启动,我不确定)。您应该看看内核转储的堆栈strace信息。例如:

代码语言:javascript
复制
127|uid=0 gid=1007@nutshell:/var # [  172.285647] BUG: spinlock lockup on CPU#0, swapper/0, 983482f0
[  172.291523] [<8003cb44>] (unwind_backtrace+0x0/0xf8) from [<801853e4>] (do_raw_spin_lock+0x100/0x164)
[  172.300768] [<801853e4>] (do_raw_spin_lock+0x100/0x164) from [<80350508>] (_raw_spin_lock_irqsave+0x54/0x60)
[  172.310618] [<80350508>] (_raw_spin_lock_irqsave+0x54/0x60) from [<7f3cf4a0>] (mlb_os81092_interrupt+0x18/0x68 [os81092])
[  172.321636] [<7f3cf4a0>] (mlb_os81092_interrupt+0x18/0x68 [os81092]) from [<800abee0>] (handle_irq_event_percpu+0x50/0x184)
[  172.332781] [<800abee0>] (handle_irq_event_percpu+0x50/0x184) from [<800ac050>] (handle_irq_event+0x3c/0x5c)
[  172.342622] [<800ac050>] (handle_irq_event+0x3c/0x5c) from [<800ae00c>] (handle_level_irq+0xac/0xfc)
[  172.351767] [<800ae00c>] (handle_level_irq+0xac/0xfc) from [<800ab82c>] (generic_handle_irq+0x2c/0x40)
[  172.361090] [<800ab82c>] (generic_handle_irq+0x2c/0x40) from [<800552e8>] (mx3_gpio_irq_handler+0x78/0x140)
[  172.370843] [<800552e8>] (mx3_gpio_irq_handler+0x78/0x140) from [<800ab82c>] (generic_handle_irq+0x2c/0x40)
[  172.380595] [<800ab82c>] (generic_handle_irq+0x2c/0x40) from [<80036904>] (handle_IRQ+0x4c/0xac)
[  172.389402] [<80036904>] (handle_IRQ+0x4c/0xac) from [<80035ad0>] (__irq_svc+0x50/0xd0)
[  172.397416] [<80035ad0>] (__irq_svc+0x50/0xd0) from [<80036bb4>] (default_idle+0x28/0x2c)
[  172.405603] [<80036bb4>] (default_idle+0x28/0x2c) from [<80036e9c>] (cpu_idle+0x9c/0x108)
[  172.413793] [<80036e9c>] (cpu_idle+0x9c/0x108) from [<800088b4>] (start_kernel+0x294/0x2e4)
[  172.422181] [<800088b4>] (start_kernel+0x294/0x2e4) from [<10008040>] (0x10008040)

1这将告诉您函数调用关系。请注意<7f3cf4a0>中的信息: 172.310618 (_raw_spin_ lock _irqsave+0x54/0x60),这告诉mlb_os81092_interrupt函数尝试使用spin_lock_irqsave锁定一些东西。所以我们可以找到这个自旋锁用来锁定什么,并试图分析或记录,以检测哪一个持有锁。然后找到了避免这种情况的方法。

2由于CPU0是锁定的,并且可以有MP系统,所以如果将irq的处理程序分配给其他CPU(如CPU1),则应该确保是否存在可能使用关键资源的irq,但是如果CPU0处理irq的处理程序,如果使用的是spin_lock而不是spin_lock_irqsave,则会导致死锁,所以请检查它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21546110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档