内核同步 - 第二部分
1. 锁依赖(lockdep)分析与修复
1.1 lockdep报告解读
锁依赖(lockdep)是内核中用于检测锁使用问题的工具,其报告中存在一些令人费解的符号。例如:
[ 1021.449384] insmod/2367 is trying to acquire lock:
[ 1021.451361] ffff88805de73f08 (&(&p->alloc_lock)->rlock){+.+.}, at: __get_task_comm+0x28/0x50
[ 1021.453676]
but task is already holding lock:
[ 1021.457365] ffff88805de73f08 (&(&p->alloc_lock)->rlock){+.+.}, at: showthrds_buggy+0x13e/0x6d1 [thrd_showall_buggy]
忽略时间戳,第二行最左侧的数字是用于标识特定锁序列的64位轻量级哈希值。 {+.+} 是 lockdep 用于表示锁获取状态的符号,具体含义可参考内核文档(https://www.kernel.org/doc/Documentation/locking/lockdep-design.txt)。
1.2 问题修复
根据 lockdep 报告,问题在于任务结构中的自旋锁 alloc_lo
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



