Linux内核常见crash原因
文章目录
前言
与前同事交流,发现以前的技术经历与解决的问题,现在接触不多,但是想想还是很有意思,虽然很多细节现在已经不能表达出来或展示出来,但是还得写出来。下面写的得主要个人经历的linux内核crash原因。
内存类
这一类同用户态类似,主要有以下几种情况,
- 访问NULL
- 访问释放后的内存
- 非法访问内存
- 内存被踩
- 内存耗尽
- 野指针操作
堆栈类
- 内核调用栈溢出
- 写坏调用栈
锁
- 死锁
- rcu使用错误
- 锁内存被写坏
- 长期获取不到锁,导致看门狗饿死,狗叫重启
调度
- 线程陷入死循环或者长时间占用cpu,在非抢占模式下其他线程得不到调度
中断上下文
- 在中断上下文调用错误的函数,例如在中断上下文使用信号量,更多参考那些可进入睡眠状态的Linux内核函数
硬件故障
在系统运行过程出现硬件故障也会导致内核crash。接触较少,不作说明。
后记
能力有限,条件有限,写的很虚,也不全面,以后有机会再来点实际的,这个目的主要是回忆总结自己的知识体系。
文章作者 沉风网事
上次更新 2016-04-17