已关闭
[Bug-Report|缺陷反馈]: allgather && allgatherv通信缺陷 #115
issuebot创建于  5月15日关闭于  6月4日
issuebot
5月15日 创建

AllGather 代码检视报告

数值安全(HIGH)

文件位置 问题 修复建议
ccu_temp_all_gather_nhr_1D_multi_jetty_mem2mem.cc:208 除零:dataCount / jettyNum_ 未检查除数 添加 if (jettyNum_ == 0) return HCCL_E_PARA;
ccu_temp_all_gather_mesh_1D_mem2mem.cc:129 除零:normalSliceSize / dataTypeSize 未检查 添加 if (dataTypeSize == 0) return HCCL_E_PARA;
all_gather_op.cc:155 溢出:sendCount * perDataSize 未检查溢出 添加溢出检查
ins_v2_all_gather_sole_executor.cc:79 溢出:dataCount_ * dataTypeSize_ 未检查 添加溢出检查
ins_v2_all_gather_parallel_executor.cc:293 溢出:同上 同上
ins_v2_all_gather_concurrent_executor.cc:212 溢出:同上 同上
all_gather_auto_selector.cc:43 溢出:count * perDataSize 未检查 同上
ccu_temp_all_gather_nhr_1D_multi_jetty_mem2mem.cc:209 回绕:减法可能导致负值 添加范围检查
ins_temp_all_gather_mesh_1D.cc:118 越界:channels.at(connectedRank)[0] 未检查空 添加 empty() 检查

内存安全(MEDIUM)

文件位置 问题 修复建议
ins_v2_all_gather_omnipipe_executor.cc:205 threads_.at(0) 未检查空 添加 if (threads_.empty()) 检查
ins_v2_all_gather_parallel_executor.cc:349 同上 同上
ins_v2_all_gather_sole_executor.cc:212 同上 同上

输入验证(MEDIUM)

文件位置 问题 修复建议
ins_v2_all_gather_sole_executor.cc:142 除零:dataTypeSize_ 未校验 添加零值检查
ins_v2_all_gather_parallel_executor.cc:399 同上 同上

并发安全(LOW)

文件位置 问题 修复建议
ins_v2_all_gather_parallel_executor.cc:469 多线程同步复杂,潜在死锁 审查同步逻辑,添加超时机制

资源管理(LOW)

文件位置 问题 修复建议
ins_v2_all_gather_sole_executor.cc:201 ctxPtr 申请后未判空 添加 nullptr 检查
ccu_temp_all_all_gather_nhr_1D_mem2mem.cc:122 channelDescs 未检查空 添加 empty() 检查

优先修复:除零保护、乘法溢出检查(9个HIGH级问题)

AllGatherV 代码检视报告


数值安全(HIGH)

文件位置 问题 修复建议
all_gather_v_op.cc:155 溢出:sendCount * perDataSize 添加溢出检查
all_gather_v_op.cc:158 累加溢出:循环累加未检查 添加累加溢出检查
all_gather_v_op.cc:260 溢出:(displs + count) * size 同上
ins_v2_all_gather_v_sole_executor.cc:63 溢出:dataCount_ * dataTypeSize_ 同上
ins_v2_all_gather_v_sole_executor.cc:138 除零:dataTypeSize_ 未检查 添加除零检查
ins_v2_all_gather_v_sole_executor.cc:145 除零:maxCountPerLoop 未检查 同上
ins_temp_all_gather_v_mesh_1D.cc:106 溢出:sliceSize * dataTypeSize_ 添加溢出检查

内存安全(HIGH)

文件位置 问题 修复建议
ins_temp_all_gather_v_mesh_1D.cc:113 越界:varData 数组容量未检查 添加容量检查
ccu_kernel_all_gather_v_mesh1d_mem2mem.cc:30 空指针:dynamic_cast 未判空 添加 nullptr 检查
ccu_kernel_all_gather_v_mesh1d_mem2mem.cc:164 同上 同上
ins_v2_all_gather_v_sole_executor.cc:112 越界:varData + rankSize_ 添加边界检查
ins_temp_all_gather_v_mesh_1D.cc:127 越界:channels.at(connectedRank)[0] 添加 empty() 检查

输入验证(MEDIUM)

文件位置 问题 修复建议
all_gather_v_op.cc:46 recvCounts 未充分校验 添加最大值检查
all_gather_v_op.cc:260 recvDispls 未校验 添加有效性校验
all_gather_v_op.cc:63 buffer重叠未检查 添加重叠检查

资源管理(HIGH)

文件位置 问题 修复建议
all_gather_v_op.cc:222 异常路径内存泄露 使用 RAII 或释放资源
ins_v2_all_gather_v_sole_executor.cc:262 内存泄露:paramMem 未释放 添加释放代码

优先修复:溢出检查(7处)、内存泄露(2处)、除零保护(2处)

likedislike
LLeewis成员
5月15日 关联了看板:HCCL
HXDW成员
5月15日 评论:

类似ranksize,datatype,dataTypeSize_等不需要校验,因为rankszie范围1-8,datatype有一个vector存放了全部的type所以size也不会为0,sendCount,recvCount单次传输已经有上限限制也不会溢出,另外现在ccu的代码正在整改部分代码会被删掉上述部分问题也会被解决,其余问题正在分析。

likedislike
LLeewis成员
5月15日 将 gcw_dFpssWuk 设为负责人
LLeewis成员
5月15日 修改标题为 “[Bug-Report|缺陷反馈]: allgather && allgatherv通信缺陷”,原标题为“allgather && allgatherv通信缺陷”
LLeewis成员
5月22日 将 chenyia 设为负责人
LLeewis成员
5月22日 移除了负责人 gcw_dFpssWuk
chenyia成员
5月26日 评论:

数值安全(HIGH)
jettyNum_固定初始化为常量1,不为0;
dataTypeSize_等不需要校验,datatype有一个vector存放了全部的type所以size也不会为0;
sendCount,recvCount单次传输已经有上限限制也不会溢出;
前序计算逻辑可保证结果不为负值;
channels前序业务流程可保证与对端rnak必定有channel,长度一定大于0

likedislike
chenyia成员
5月26日 评论:

内存安全(MEDIUM)
threads_前序业务流程可保证长度一定大于0;

likedislike
chenyia成员
5月26日 评论:

输入验证(MEDIUM)
dataTypeSize_等不需要校验,datatype有一个vector存放了全部的type所以size也不会为0

likedislike
chenyia成员
5月26日 评论:

并发安全(LOW)
并非多线程代码,thread本意为流,同步已经经过checker检查

likedislike
chenyia成员
5月26日 评论:

资源管理(LOW)
ctxPtr如果申请失败,会通过CHK_RET返回报错,否则必定非空;
channelDescs 前序业务流程可保证长度一定大于0;

likedislike
chenyia成员
5月26日 评论:

==========下面为AllGatherV==========

likedislike
chenyia成员
5月26日 评论:

内存安全(HIGH)
varData为算子入参,由上层框架保证有效性;
dynamic_cast前序业务流程可保参数必定非空;
channels前序业务流程可保证与对端rnak必定有channel,长度一定大于0

likedislike
chenyia成员
5月26日 评论:

输入验证(MEDIUM)
recvCounts 和recvDispls 为算子入参,由上层框架保证有效性;
支持buffer重叠

likedislike
chenyia成员
5月26日 评论:

资源管理(HIGH)
all_gather_v_op.cc:222有问题,异常路径内存泄露,需要释放paramMem

likedislike
LLeewis成员
6月1日 将 z00850967 设为负责人
Leewis成员
6月4日 评论:

异常路径内存泄露,需要释放paramMem,该问题已经修改上库,相关pr:https://gitcode.com/cann/hccl/pull/774

likedislike
LLeewis成员
6月4日 issue状态由 待办的 改变为 已确认
LLeewis成员
6月4日 issue状态由 已确认 改变为 已完成
LLeewis成员
6月4日 关闭了 issue
CANN-robotCANN-robot成员
6月4日 添加了label:Accepted
LLeewis成员
25 天前 移除了看板:HCCL