发布时间:2015-07-29 19:04:27
如何在内核中正确分配和释放page?
?内核中使用内存是再平常不过的事了,但应该如何正确使用呢,尤其是在自己编写驱动时,应该如何正确的分配和释放内存,是一大问题,不理清楚的话,可能导致严重后果,比如:内存泄露、越界、野指针等。......【阅读全文】
发布时间:2015-07-29 18:47:00
本问题是个简单的内核编程问题(spin_lock的用法问题):spin_lock(task_lock)不能直接在中断上下文中使用,因为这样的锁没有关中断,他可能被中断打断,然后中断上下文中如果再次获取该锁就导致死锁了,除非能确认该锁不会在其它地方使用。
问题很简单,但却很有警示意义。可能有人认为内核代码随便就能写,模仿模仿就行,但实际上,内核编程水很深、坑很多,稍不留神(对相关用法和原理了解不够)就可能会掉坑里,立马掉进去还好,最怕就是给自己埋雷,不知道哪一天会踩到,到时后果就很严重了,所以,对内核的任何改动或新增代码,都需要千万谨慎,多修炼吧!......【阅读全文】
发布时间:2015-07-21 16:00:06
本文讲述一次spinlock死锁故障的定位过程,目的不在于问题本身,而在于展现一个内核bug的分析过程,提供一种分析思路,供大家参考。
一、问题现象
内核出现panic,kdump搜集到了vmcore。vmcore中直接导致panic的log信息为(包含相应CPU上的堆栈):......【阅读全文】
发布时间:2015-07-16 15:00:58
Crash工具分析某vmcore时,本想看看vmcore中running状态进程的相关状态,但是发现该vmcore中的running状态的进程异常多,而且其堆栈都是在schedule()中,有点不符合常理:......【阅读全文】