- 论坛徽章:
- 0
|
hi, 有个问题, 使用 spin_lock_bh 时, 长时间加不上锁, 导致系统崩溃。
spin_lock_bh 生成的汇编代码:
- call 2e81 <xxx+0x51>
- 2e81: R_386_PC32 local_bh_disable --- 先禁止软中断
- mov 0x8(%esp),%ecx
- mov 0x4(%esp),%esi
- add %esi,%ecx
- lea 0x0(,%ecx,4),%eax
- mov %eax,(%esp)
- mov %eax,%edx
- mov $0x100,%eax
- mov 0xc(%edi),%ebx
- add %ebx,%edx
- lock xadd %ax,(%edx)
- cmp %ah,%al --- 这里比较(ah != al)
- je 2eb4 <xxx+0x84>
- pause --- (ah != al)进来这里, 也挂在这里
- mov (%edx),%al
- jmp 2eaa <xxx+0x7a>
- mov 0x8(%edi),%edx
- lea 0x0(,%ecx,8),%ebp
复制代码 不知道信息够不够全, 系统环境是 多核, 存在内存泄露, 踩内存等不稳定因素, 会成为
spin_lock_bh 加锁时间过长导致宕机的原因吗???
还有其他什么因素可能会导致 spin_lock_bh 加锁失败, 就一个地方加锁,应该不存在锁资源已经被占用情况。
谢谢。 |
|