错误 #2232
[15p_pre2T4升级验证]网管上挂无效用户,终端接入个数会递增,同时shell卡死无法登录
0%
描述
在有用户接入时,在线终端数会一直累积。终端释放时,在线终端可以显示为 0 。 同时发现shell卡死,shell phy打印状态和信令出问题以后就不更新了。同时发现各个子系统日志在16:39 时间点之后产出的也都不进行转储
杨乐初步分析:从日志分析,问题是14的线程核心卡死了,14线程运行了baseService和cu的吞吐率线程;当卡死发生时,导致了cu在线数量一直增加;也可能会导致shell连接失败。
怀疑有如下两种可能性,暂时不能确定
1.cu的吞吐率代码出现死循环,可能性很低
2.baseService的日志转储出现了死循环,可能性稍高
建议:重启173服务器后,执行命令停止baseService:systemctl stop baseservice;然后按照之前的方式尝试复现,看问题是否出现
文件
历史记录
由 杨 杨乐 更新于 11 个月 之前
- 状态 从 新建 变更为 转测试
- 指派给 从 杨 杨乐 变更为 刘 抒放
【问题原因】
当只有1个UE,且UE经常掉线的场景。如下的代码,在ue_size为1,m_tr_mgrs.m_ue_ul_datas为空时,会导致程序进入死循环
std::map<uint32_t, ue_throught_rate_save>::iterator iter = m_tr_mgrs.m_ue_ul_datas.begin();
for (uint32_t i = 0; i < ue_size; ++i, ++iter)
{
tr->m_ue_tr[i].copy_ul(iter->second);
}
【修改方案】
增加m_tr_mgrs.m_ue_ul_datas是否为空的判断
std::map<uint32_t, ue_throught_rate_save>::iterator iter = m_tr_mgrs.m_ue_ul_datas.begin();
for (uint32_t i = 0; i < ue_size && iter != m_tr_mgrs.m_ue_ul_datas.end(); ++i, ++iter)
{
tr->m_ue_tr[i].copy_ul(iter->second);
}
【回归方法和注意事项】
按照原因中描述的场景,测试12到24小时,如果不复现可考虑关单