- 论坛徽章:
- 46
|
crash发生在detach_timer中的__list_del(entry->prev, entry->next)
当前正在拖链的timer如下,从内存中的信息可以看到这个timer中的next为NULL,prev为0x200200说明之前已经被拖链了,为什么这里会有重复的拖链动作
怀疑是并发的问题,但是没有找到具体的原因,都是内核的代码,有人遇到过这样的问题吗,或者给一些继续解决这个问题的思路或者方向,多谢!
struct timer_list {
function = 0xc0051ed8 <delayed_work_timer_fn>,
data = 0xc0f4e254,
entry = {
next = 0x0,
prev = 0x200200
},
expires = 0x230ed7,
base = 0xc0955b03 <boot_tvec_bases+3>,
slack = 0xffffffff
}
查看这个timer对应的tvec_base,这个tvec_base中的自旋锁当前是处于竞争的状态,next=aafc,ower=aaf9
crash> struct tvec_base c0955b00 -x
struct tvec_base {
lock = {
{
rlock = {
raw_lock = {
{
slock = 0xaafcaaf9,
tickets = {
owner = 0xaaf9,
next = 0xaafc |
|