已关闭
[Bug] dynamic_quant_base.h InitLargeShapeParams 函数同样存在空 else 块导致 loopCnt 未初始化 #2078
shermanrowena创建于  4月15日关闭于  4月30日
shermanrowena
4月15日 创建

问题描述

quant/dynamic_quant/op_kernel/dynamic_quant_base.hInitLargeShapeParams 函数中,存在与 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 超出有效核范围
}

严重程度

likedislike
CANN-robotCANN-robot成员
4月15日 添加了label:bug
chenqi317成员
4月24日 评论:

loopCnt 默认为0,不存在未初始化的动作。 代码可以去掉else{}判断

likedislike
Cchenqi317成员
4月24日 将 zhajianqing123 设为负责人
Zzhajianqing123成员
4月25日 将 liujie12345678 设为负责人
Zzhajianqing123成员
4月25日 移除了负责人 zhajianqing123
Lliujie12345678成员
4月25日 将 cuijie25 设为负责人
cuijie成员
4月25日 评论:

已移除else{}判断,loopCnt为0的场景,后续计算均不会有问题 @shermanrowena 请确认,若无问题将关闭此Issue

likedislike
Lliujie12345678成员
4月30日 issue状态由 进行中 改变为 已完成
Lliujie12345678成员
4月30日 关闭了 issue
CANN-robotCANN-robot成员
4月30日 添加了label:Accepted
CANN-robotCANN-robot成员
4月30日 添加了label:resolved