错误 #578
内存分配失败
0%
描述
简述:内存分配失败
测试环境:246
测试版本:rel2.1.6
测试问题:24h常保测试,配置大上行,内存分配失败,导致du挂死
历史记录
由 匿名用户 更新于 将近 4 年 之前
[06-25 05:17:33.782][DEBUG]NR_RACH_DBG: MSG3 RECVED is CCCH SDU!!!
[06-25 05:17:33.782][ERROR]rgSCHLvl1UtlAllocSBuf,Unable to Allocate the Buffer
[06-25 05:17:33.782][ERROR]DBG_CELLID1 Scheduler handling failed rgSCHLvl1CfgCellUeCtxtInit for CRNTI17027
cmGetMemBlkSetForAlloc failed 2
Failed to get the buffer of size 50616 file /root/DU/ran/DU_Alpha/src/cm/cm_mem_wl.c line 2504
(gdb) p ue
$1 = (RgSchLvl1UeCb *) 0x7ffe56502020
(gdb) p ue->cell
$2 = (RgSchLvl1CellCb *) 0x0
(gdb) p ue->ueId
$3 = 0
长时间运行后,UE随机接入收到MSG3之后,初始化UE在MAC的结构体时,分配内存失败,后续其他流程访问未保护,导致访问到错误 空地址从而挂死。
由 匿名用户 更新于 将近 4 年 之前
[06-27 07:00:37.968][DEBUG]NR_RACH_DBG: MSG3 RECVED !!!
[06-27 07:00:37.968][DEBUG]NR_RACH_DBG: MSG3 RECVED is CCCH SDU!!!
[06-27 07:00:37.968][DEBUG]cmGetMemBlkSetForAlloc: failed 2, listValidBktSet Cnt0
[06-27 07:00:37.968][ERROR]rgSCHLvl1UtlAllocSBuf,Unable to Allocate the Buffer
[06-27 07:00:37.968][ERROR]DBG_CELLID1 Scheduler handling failed rgSCHLvl1CfgCellUeCtxtInit for CRNTI17036
周末跑的挂死情况也是内存分配失败导致,从上面新添加log看,是内存耗尽,不是踩栈改变了内存管理链表。
该处申请内存大小大于50000,为最后一个内存bucket。
下一步只能走读代码,细致查看哪一处存在对该大内存bucket使用,但未释放的情况。
由 匿名用户 更新于 将近 4 年 之前
- 状态 从 进行中 变更为 转测试
huang xiwen 写到:
[06-27 07:00:37.968][DEBUG]NR_RACH_DBG: MSG3 RECVED !!!
[06-27 07:00:37.968][DEBUG]NR_RACH_DBG: MSG3 RECVED is CCCH SDU!!!
[06-27 07:00:37.968][DEBUG]cmGetMemBlkSetForAlloc: failed 2, listValidBktSet Cnt0
[06-27 07:00:37.968][ERROR]rgSCHLvl1UtlAllocSBuf,Unable to Allocate the Buffer
[06-27 07:00:37.968][ERROR]DBG_CELLID1 Scheduler handling failed rgSCHLvl1CfgCellUeCtxtInit for CRNTI17036周末跑的挂死情况也是内存分配失败导致,从上面新添加log看,是内存耗尽,不是踩栈改变了内存管理链表。
该处申请内存大小大于50000,为最后一个内存bucket。
下一步只能走读代码,细致查看哪一处存在对该大内存bucket使用,但未释放的情况。
经过对所有大小超过20000的内存进行走读,查看申请和释放是否正常;
经过排查发现,随机接入过程中,如果收到了MSG3,但CU未正常反馈rrc setup的情况下,内存释放异常,部分已申请内存未释放,
且大小正好是超过20000的。
在该情况下,添加对未释放内存的释放操作,版本更新后,待测试验证。