kmemleak 如何查找泄露点???

[复制链接]
查看11 | 回复2 | 2021-1-27 05:10:05 | 显示全部楼层 |阅读模式
内核代码为4.18 请问 遇到如下情况该如何去寻再找对应的泄露点????
越具体越好,第一次寻找,只知道从没有对Kmalloc进行释放,即没有对应的kfree。但对于实际的事情发生还是读不懂以下代码的上下文 请高手帮忙找一下!!!!
root@intel-x86-64:/sys/kernel/debug#echoscan>kmemleak
backtrace:
unreferencedobject0xffff9195e2b23400(size256):
comm"softirq",pid0,jiffies4347625846(age11.014s)
hexdump(first32bytes):
01000000000000000e00000000000000................
7722000000000000d88946ee9591ffffw"........F.....
backtrace:
[]kmem_cache_alloc+0x146/0x200
[]__nf_conntrack_alloc.isra.13+0x4d/0x170[nf_conntrack]
[]init_conntrack+0x6a/0x2f0[nf_conntrack]
[]nf_conntrack_in+0x2c5/0x360[nf_conntrack]
[]ipv4_conntrack_in+0x1c/0x20[nf_conntrack_ipv4]
[]nf_hook_slow+0x48/0xd0
[]ip_rcv+0x2cf/0x3ef
[]__netif_receive_skb_core+0x467/0xb70
[]__netif_receive_skb+0x26/0x70
[]netif_receive_skb_internal+0x53/0x150
[]napi_gro_receive+0x5f/0x110
[]e1000_receive_skb+0x122/0x140
[]e1000_clean_rx_irq+0x1e8/0x400
[]e1000e_poll+0x81/0x2a0
[]net_rx_action+0x12e/0x370
[]__do_softirq+0xae/0x313

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:10:05 | 显示全部楼层
kmemleak在扫瞄的时候,泄露的内存已经不被人引用了,申请该块的代码也早就执行过了,也就只是能找到这一块内存没人管了而已,不能帮你定位到泄露点,只能告诉你有泄露,至于泄露点,自己可以在内存申请的地方加日志,把申请的地址打印到日志,那么配合kmemleak的扫瞄结果,可以定位
回复

使用道具 举报

千问 | 2021-1-27 05:10:05 | 显示全部楼层
如何加日志呢? 比如我找到内存申请的地址为:
内核路径:net/netfilter/nf_conntrack_core.c
1128net_warn_ratelimited("nf_conntrack:tablefull,droppingpacket\n");
1129returnERR_PTR(-ENOMEM);
1130}
1131}
1132
1133/*
1134*Donotusekmem_cache_zalloc(),asthiscacheuses
1135*SLAB_TYPESAFE_BY_RCU.
1136*/
1137ct=kmem_cache_alloc(nf_conntrack_cachep,gfp);
1138printk("kmem_cache_alloctest\n");
1139printk("kmem_cache_allocct=%x\n",ct);
1140if(ct==NULL)
1141gotoout;
1142
1143spin_lock_init(&ct->lock);
1144ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple=*orig;

具体加那句话 能告知吗 ?
printk("ct=%x\n"ct);????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行