已关闭
【缺陷报告】内存分配大小错误 - 文件dynamic_block_quant_infershape.cpp - 函数CheckShape - 行号57 #5025
zhangjunkai9创建于  19 天前关闭于  9 天前
zhangjunkai9
19 天前 创建

缺陷信息

缺陷类型incorrectMemoryAllocationSize (内存分配大小错误)
函数CheckShape
文件quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp
行号57
置信度90%

缺陷描述

在3维输入的分支中,dim2 = inputXShape->GetDim(DIGIT_ZERO) 应为 GetDim(DIGIT_TWO),使用了错误的索引0而非2读取第三维度。当 dim0 与实际第三维度不同时,scale 张量的第三维度被错误计算为 CeilDiv(dim0, colBlockSize) 而非 CeilDiv(dim2, colBlockSize),导致 scale 张量形状与实际数据需求不匹配,可能造成缓冲区分配不足引发溢出。

事实核查

核查1模式成立:第57行 int64_t dim2 = inputXShape->GetDim(DIGIT_ZERO) 明显为复制粘贴错误,应使用 DIGIT_TWO(2) 而非 DIGIT_ZERO(0),dim2被错误赋值为dim0。

核查2无有效防护:错误的dim2值直接流入第79行 scaleShape->SetDim(DIGIT_TWO, CeilDiv(dim2, colBlockSize)),无任何校验拦截。

核查3函数可达:通过 IMPL_OP_INFERSHAPE(DynamicBlockQuant).InferShape(InferShapeForDynamicBlockQuant) 注册为入口,可达(call_sites引用aclnn_celu.cpp属错误关联,不影响可达性判定)。

核查4触发可满足:任何3维输入且dim0!=实际第三维度时,scale张量形状计算错误,此为常见输入场景,触发可满足

数据流证据

Source(问题源头)

quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp:57 行 int64_t dim2 = inputXShape->GetDim(DIGIT_ZERO) 错误地使用索引0获取第三维度值

Sink(问题爆发点)

quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp:79 行 scaleShape->SetDim(DIGIT_TWO, Ops::Base::CeilDiv(dim2, colBlockSize)) 使用错误的 dim2 值设置 scale 形状

传播路径:

# 文件 行号 说明
1 quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp 55 int64_t dim0 = inputXShape->GetDim(DIGIT_ZERO) 正确获取第0维
2 quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp 57 int64_t dim2 = inputXShape->GetDim(DIGIT_ZERO) 错误:应使用 DIGIT_TWO(2) 而非 DIGIT_ZERO(0),dim2 被赋值为 dim0 而非实际第三维度
3 quant/dynamic_block_quant/op_host/dynamic_block_quant_infershape.cpp 79 scaleShape->SetDim(DIGIT_TWO, Ops::Base::CeilDiv(dim2, colBlockSize)) 当 dim0 != 实际 dim2 时,scale 第三维度计算错误

修复建议

// In dynamic_block_quant_infershape.cpp, line 57:
// Change DIGIT_ZERO to DIGIT_TWO:
int64_t dim2 = inputXShape->GetDim(DIGIT_TWO);
likedislike
yuning_chenyuning_chen成员
19 天前 将 east_yang 设为负责人
yuning_chen
yuning_chen成员
19 天前 评论:

您好,感谢反馈,问题已收到,当前 @liujie12345678 正在跟踪处理。

likedislike
yuning_chenyuning_chen成员
19 天前 将 liujie12345678 设为负责人
yuning_chenyuning_chen成员
19 天前 移除了负责人 east_yang
Lliujie12345678成员
16 天前 将 cuijie25 设为负责人
Ccuijie成员
14 天前 将 jiaoyiming 设为负责人
Ccuijie成员
14 天前 移除了负责人 liujie12345678
Ccuijie成员
14 天前 移除了负责人 cuijie25
yuanbin_22成员
9 天前 评论:

/assign

likedislike
CANN-robotCANN-robot成员
9 天前 将 yuanbin_22 设为负责人,移除负责人 jiaoyiming
Yyuanbin_22成员
9 天前 关联了pull request:fix(dynamic_block_quant): correct dim2 index in CheckShape for 3D input
焦一鸣焦一鸣成员
9 天前 关联了pull request:fix(dynamic-block-quant): use correct third dimension for scale shape
Yyuanbin_22成员
9 天前 将 jiaoyiming 设为负责人
Yyuanbin_22成员
9 天前 移除了负责人 jiaoyiming
Yyuanbin_22成员
9 天前 移除了负责人 yuanbin_22
Yyuanbin_22成员
9 天前 将 jiaoyiming 设为负责人
CANN-robotCANN-robot成员
9 天前 关闭了 issue
CANN-robotCANN-robot成员
9 天前 添加了label:resolved