内存泄露调试分析(二)

  在monkey测试时,出现OOM情况,在OOM吐出的mem-info信息中slab SUnreclaim 并不多,只有300M左右。

但是系统确没有可分配内存,后来通过回退版本,发现是WIFI firmware提交导致。

继续跟踪slabinfo信息,发现skbuff_head_cache 一直在增加,查找skb的alloc_calls,发现WIFI驱动调用最多.

 

91376 __build_skb+0x44/0xac
[4]__build_skb+0x44/0xac
[5]__netdev_alloc_skb+0xf0/0x150
[6]osl_pktget+0xa0/0x10c
[7]dhd_msgbuf_rxbuf_post.isra.31+0x150/0x48c
[8]dhd_prot_rxcmplt_process+0x108/0x1e8
[9]dhd_prot_process_msgtype+0x134/0x1e8
[10]dhd_prot_process_msgbuf_rxcpl+0x90/0x118
[11]dhdpci_bus_read_frames.isra.20+0xa8/0xd4
[12]dhd_bus_dpc+0x238/0x2d8
[13]dhd_dpc+0x28/0x7c
[14]tasklet_action+0xec/0x184
[15]__do_softirq+0x288/0x5a4
 age=24/2561636/5602169 pid=0-27854 cpus=0,7
 

证明WIFI驱动申请的内存没有释放,继续查看__netdev_alloc_skb函数实现,发现可能会直接调用alloc_pages申请内存(所以在slab里面看不到内存泄露)

这个有两种情况: 1. len大于8k ,通过slab里面走alloc pages

2. len小于4k,且不是通过DMA,直接走alloc pages分配

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值