linux panic 问题定位

来源:互联网 发布:淘宝认证信息可以改吗 编辑:程序博客网 时间:2024/06/07 06:23

1. insmod 模块报“operation not permitted”,很快出现panic 信息

此问题最终原因是模块初始化时接口返回值混乱导致,实际上此模块已经成功插入到内核,但是因为返回值混乱,导致判断是插入模块失败,因此当前内核模块退出,但此内核模块注册到内核的过程没有被正确卸载,在使用时直接因为没有可用的代码段导致panic


2. panic 时报rcu_preempt self-detected stall on CPU

此问题最终原因是内核死锁。有两个过程需要同步,一个是报文收发软中断,另一个是命令下发过程(进程上下文),代码中使用spin_lock 同步。

        在命令下发过程中,锁已经获取,但恰好此时有一个软中断到来,打断了命令下发过程,而且在软中断过程中需要获取相同的锁,此锁已经被命令下属过程占住,因此导致死锁。解决方法很简单,在命令下发过程中禁止软中断,即使用spin_lock_bh 同步


转自http://blog.csdn.net/wdq347/article/details/39641551

0 0