Linux死机分析方法--(下)--死锁导致的--panic

1.概述

之前也提及到死机,由OOPS导致的,当然也有由于死锁导致的panic,分析途径都是一样的,主要是配置如何检测。

2.实际例子

在实际使用中,主要是由于相互请求对方的锁,导致线程卡死。 配置参考:

Kernel hacking → Lock debugging (spinlocks, mutexes, etc.)
CONFIG_LOCKDEP=y    #追踪锁的依赖关系,定位死锁路径
CONFIG_DETECT_HUNG_TASK=y   #检测hung task(卡死的线程)触发panic
CONFIG_PAINC_ON_HUNG_TASK=y #检测到hung task后触发kernel Panic。

CONFIG_DEBUG_INFO=y #生成调试符号,用于后续定位
CONFIG_FRAME_POINTER=y  #确保栈回溯完整

核心步骤:开启栈帧回溯,调试符号,将对应的检测项加入。 分析步骤,还是一样,通过addr2line + vmlinux(带调试符号) + 触发dump地址,去锁定目标。