已关闭
[Bug] dynamic_quant_base.h InitLargeShapeParams 函数同样存在空 else 块导致 loopCnt 未初始化 #2078
shermanrowena创建于 4月15日关闭于 4月30日
4月15日 添加了label:bug
4月25日 将 liujie12345678 设为负责人
4月25日 移除了负责人 zhajianqing123
4月25日 将 cuijie25 设为负责人
cuijie
4月25日 评论:
4月25日 评论:
已移除else{}判断,loopCnt为0的场景,后续计算均不会有问题 @shermanrowena 请确认,若无问题将关闭此Issue


4月30日 issue状态由 进行中 改变为 已完成
4月30日 关闭了 issue
4月30日 添加了label:Accepted
4月30日 添加了label:resolved
问题描述
在
quant/dynamic_quant/op_kernel/dynamic_quant_base.h的InitLargeShapeParams函数中,存在与InitSmallShapeParams相同的缺陷:当blockIdx >= tilingData_.coreNum时,进入空的 else 块,变量loopCnt未被初始化,但第 175 行立即使用该变量参与计算。问题位置
文件:
quant/dynamic_quant/op_kernel/dynamic_quant_base.h,第 165–175 行错误代码
if (blockIdx < tilingData_.headCoreNum) { loopCnt = rowPerHeadCore; } else if (blockIdx >= tilingData_.headCoreNum && blockIdx < tilingData_.coreNum) { loopCnt = rowPerTailCore; } else { // 空块!loopCnt 未初始化 } sizeFloatLen = (loopCnt + SEVEN) / EIGHT * EIGHT; // loopCnt 可能为垃圾值影响
loopCnt 携带随机值参与后续缓冲区大小计算,可能导致内存越界访问或 NPU 运行异常。
修复建议
} else { return; // blockIdx 超出有效核范围 }严重程度
高