错误 #5108
V0.0.1_T07__Alpha17,终端90接入过程core dump
0%
描述
msg3处理时崩溃崩溃堆栈如图:
(gdb) bt
#0 0x00000000008731f4 in rte_pktmbuf_lastseg (m=0x7b11000c84b94093) at /root/ueapp-deps-arm/dpdk-c-build/dpdk-stable-20.02.1/arm64-armv8a-linux-gcc/include/rte_mbuf.h:1681
#1 rte_pktmbuf_trim (len=0, m=0x15d991b80) at /root/ueapp-deps-arm/dpdk-c-build/dpdk-stable-20.02.1/arm64-armv8a-linux-gcc/include/rte_mbuf.h:1681
#2 ngPktTrim (p=p@entry=0x15d991b80, len=len@entry=0) at fwk/ngPkt/csrc/wn5gNrPsNgPktApi.c:878
#3 0x00000000008bfdc8 in wnDoRrcConnReq (rrcSetUpRqst=rrcSetUpRqst@entry=0x7f80013b30, uacNas=uacNas@entry=0x31e74e80, nasStmsi=nasStmsi@entry=0x17fac73f6) at src/l3/rrc/csrc/wn5gNrUePsRrcSetUpRqst.c:203
#4 0x00000000008c07d0 in wnTmrRrcSetUpRqstInit (nasStmsi=<optimized out>, uacNas=0x31e74e80, rrcSetUpRqst=0x7f80013b30) at src/l3/rrc/csrc/wn5gNrUePsRrcSetUpRqst.c:283
#5 wnRrcEncodeRrcSetUpRqst (rrcSetUpRqst=rrcSetUpRqst@entry=0x7f80013b30, mbufPool=mbufPool@entry=0x17f1ab580, uacNas=0x31e74e80, nasStmsi=0x17fac73f6) at src/l3/rrc/csrc/wn5gNrUePsRrcSetUpRqst.c:260
#6 0x00000000008c9a50 in wnRrcSetupReqst (rrcCb=0x31e88000, mbufPool=0x17f1ab580) at src/l3/rrc/csrc/wn5gNrUePsRrcIdleHndlr.c:821
#7 0x0000000000aa9f7c in wnCellSelHandlerD2D (cpCbRcvd=cpCbRcvd@entry=0x31e72300, data=data@entry=0x0) at src/l3/nas/csrc/wn5gNrUePsNasMmState.c:365
#8 0x0000000000ab2350 in wnNasProcessTimersMsg (mpiMsg=<optimized out>, cpCb=0x31e72300) at src/l3/nas/csrc/wn5gNrUePsNasTimers.c:25
#9 0x0000000000aaee00 in wnProcessRxNgRingMsg (cpCb=0x31e72300) at src/l3/nas/csrc/wn5gNrUePsNASRxNgRingMgr.c:123
#10 0x00000000008df558 in threadL3 (ueCb=0x31e71c30) at src/l3/rrc/csrc/yzL3Mani.c:434
#11 0x0000000000dba528 in eal_thread_loop ()
#12 0x0000007fafef77e4 in start_thread (arg=0x7ff1f4ce9f) at pthread_create.c:486
#13 0x0000007fafd7d70c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
历史记录
由 李 玮璇 更新于 3 个月 之前
- 状态 从 新建 变更为 进行中
【问题原因】msg3处理中ngPkt指针使用错误
typedef struct wnRrcSetUpReqParm
{
UL_CCCH_Message_t wnUlCcchMsg; /**< variable to Ul-CCCH strct /
ngPkt *setUpReqPkt; /*< ng Pkt to send Setup Request /
wnRrcCbP rrcCb; /*< Ptr to rrcCb /
wnInt8 *setupReqfailToNas; /*< flag to SetupReq Fail Info to NAS */
} wnRrcSetUpReqParmT,
*wnRrcSetUpReqParmP;
wnRrcSetUpReqParmP rrcSetUpRqst;
ngPktTrim函数的第一个值理应是个ngPkt指针,之前错误传入rrcSetUpRqst指针,实际应该是rrcSetUpRqst->setUpReqPkt
所以ngPktTrim使用了的错误的地址,错误用法下,只有在别的地址内容不符合自己使用逻辑、或者别人发现数据更改不对了、或者导致两边出现崩溃才会引起人注意;因此当多次接入内存数据多变情况下才会暴漏出来问题
【解决方案】修改正确的ngPkt指针
【测试结果】OK