【发布时间】:2014-10-06 05:52:44
【问题描述】:
我正在为 Linux 内核开发一些网络驱动程序。我有几个 if-else 条件,我正在重新分配或释放“skb”结构 - 这是我有点困惑的地方。关于我在那些 if-else 中做什么 - 我有两种错误:
- Calltrace 因为双重释放 skb,然后内核崩溃并重新启动
- 内存泄漏,因为我没有释放一些 skb
我的问题是 - 是否有任何形式的方法来查找内存泄漏或双内存错误?我知道内核在释放一些 skb 后会使用内存中毒,但它并没有告诉我错误在哪里。
对不起,我不能分享这个驱动的代码。
【问题讨论】:
-
尝试
valgrind查找内存泄漏 -
您确定 valgrind 可以帮助我查找内核空间中的内存泄漏吗?
-
我错过了那部分。我认为它不会工作..对不起
-
是否可以将大部分驱动程序作为用户空间库运行,只使用一组基本的内核级代码?
-
@steve:恐怕不会。与 Linux 内核的交互太多了。
标签: c linux linux-kernel linux-device-driver