【问题标题】:Balancing memory usage in Linux kernel在 Linux 内核中平衡内存使用
【发布时间】:2014-10-06 05:52:44
【问题描述】:

我正在为 Linux 内核开发一些网络驱动程序。我有几个 if-else 条件,我正在重新分配或释放“skb”结构 - 这是我有点困惑的地方。关于我在那些 if-else 中做什么 - 我有两种错误:

  1. Calltrace 因为双重释放 skb,然后内核崩溃并重新启动
  2. 内存泄漏,因为我没有释放一些 skb

我的问题是 - 是否有任何形式的方法来查找内存泄漏或双内存错误?我知道内核在释放一些 skb 后会使用内存中毒,但它并没有告诉我错误在哪里。

对不起,我不能分享这个驱动的代码。

【问题讨论】:

  • 尝试valgrind 查找内存泄漏
  • 您确定 valgrind 可以帮助我查找内核空间中的内存泄漏吗?
  • 我错过了那部分。我认为它不会工作..对不起
  • 是否可以将大部分驱动程序作为用户空间库运行,只使用一组基本的内核级代码?
  • @steve:恐怕不会。与 Linux 内核的交互太多了。

标签: c linux linux-kernel linux-device-driver


【解决方案1】:

kmemleak 似乎是你的朋友。请检查http://lwn.net/Articles/187193/ 是否可以提供帮助。这值得评论,但我的声誉不是 50,所以无法对您的问题添加评论。

【讨论】:

    猜你喜欢
    • 2012-11-26
    • 1970-01-01
    • 2018-09-01
    • 2015-04-28
    • 2019-08-21
    • 1970-01-01
    • 2013-06-03
    • 2014-02-15
    • 2016-04-05
    相关资源
    最近更新 更多