最近小组收到一个precheck,
snapshot 里面的dump信息解析出来后,Fatal 调用栈的顶端如下
0x99a2e00c -> xxx::MStaticCellData::isNumOfDroppedLessThanRatio(const macps::Xsfn &, const macps::Xsfn &, const macps::catm::pre::MPsSibrSubframeBitmapKeeper &, const macps::catm::MUeCommonSchedulingInfo &) const (o=0x0000086c)
行数信息就对应在 isNumOfDroppedLessThanRatio 这个函数的指令偏移 0x0000086c
废话不多说,干货。
找到crash对应版本相同的version,更新到本地工程后,
编译选项中,只要加上一个DSP_CFLAGS += -AL,
示例: xxx\\yyy\Make\dsp_flags.mk
然后,执行 make xxx ARCH=dspnyq MODE=release -j22 > ci_dspnyq.log 2>&1
比如 MStaticCellData.cpp,在编译过程中,会同时生成MStaticCellData.obj, MStaticCellData.lst
该函数0x0000086c 对应的行数为771
771行如下,最终查询到时mUeData有其中一个条件分支中可能为NULL,fatal为内存非法访问