| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[build] format all C/C++ files Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !4462 merge build/clang-format into master [build] format all C/C++ files Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. format all C/C++ files ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 编译成功 2. 全量拦截项通过 3. 前冒烟测试通过 补充的UT用例: NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 合入检查 <!-- 在正式合入前,请做好必要的代码测试,用例补充,软件代码风格检查等。提高合入效率。--> <!-- [x] 表示选中 --> - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论 /lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [x] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4462 | 1 个月前 | |
fix:修复6类安全函数返回值丢弃与legacy架构违规问题 Co-authored-by: sunwenxuan<3201087621@qq.com> # message auto-generated for no-merge-commit merge: !4509 merge master into master fix:修复6类安全函数返回值丢弃与legacy架构违规问题 Created-by: sunwenxuan Commit-by: sunwenxuan Merged-by: cann-robot Description: ## 描述 本 PR 针对评审提出的安全函数返回值丢弃问题(H-D7 系列)与 rank_graph 函数内 static 变量线程安全问题(H-D5-2)做最小化修复:不改变成功路径行为,不调整底层 return 语义,全部修改为失败路径的显式处理或 (void) 显式标注。 ### 1. H-D7-10/11: local_ub_rma_buffer.cc 构造函数 key 的 memcpy_s 返回值丢弃 - 两个构造函数中 memcpy_s(key, HRT_UB_MEM_KEY_MAX_LEN, reqReg.key, ...) 返回值丢弃,key 拷贝失败会静默导致 UB RMA key 错误 - 修复:检查返回值,失败时 THROW<InvalidParamsException>,与同文件拷贝构造函数既有检查模式一致 ### 2. H-D7-12: topo_addr_info 6 个 C 文件安全函数返回值丢弃(33 处) - hal.c / product_card.c / product_pod.c / product_server.c / rank_info_types.c / topo.c 中 memset_s/sprintf_s/strcpy_s/memcpy_s 返回值丢弃 - 修复:显式 (void) 标注(与项目既有风格一致,如 hal.c HalGetUBEntityList),零行为改变 - 特例 topo.c GetTopoFilePathFromFile:memset_s 失败路径存在真实资源泄漏(fileBuf/fp 未释放,且未初始化内存被 fread 读取),补充 free(fileBuf); fclose(fp); return -1 - 特例 hal.c 的 sprintf_s davinci_dev 和 sprintf_s server_id:缓冲区远大于结果,失败分支不可达,统一改为 (void) 标注 ### 3. H-D5-2: rank_graph 函数内 static vector 跨调用 mutate - GetTopoInstsByLayer 内 static std::vector<uint32_t> sTopoInstList 为全局唯一,多 RankGraphV1 实例并发调用时互相覆盖,data() 指针跨调用失效 - 修复:改为成员 topoInstsVec_,每个实例拥有独立缓冲;单实例调用行为不变 ### 4. H-D7-1: hccl_kernel_launch_aicpu.cc P2P kernel 参数填充安全函数返回值丢弃(5 处) - LaunchP2pExec 与 group 模式的 memset_s/memcpy_s 统一包 CHK_SAFETY_FUNC_RET(函数返回 HcclResult,宏合法) ### 5. H-D7-2/4/5/6/8/9: dfx/日志/名称截断类安全函数返回值丢弃 | 编号 | 文件 | 修复方式 | |------|------|---------| | H-D7-2 | channel_manager.cc strncpy_s x2 | CHK_SAFETY_FUNC_RET | | H-D7-4 | hccl_one_sided_service.cc memset_s x2 | CHK_SAFETY_FUNC_RET | | H-D7-5 | aicpu_profiling_manager.cc memset_s | CHK_SAFETY_FUNC_RET | | H-D7-6 | aicpu_kfc_process.cc memset_s | (void) 标注(destSize==count,不可能失败) | | H-D7-8 | hccl_socket.cc Close() strcpy_s | if + HCCL_ERROR + tag 清空(不跳过 abort) | | H-D7-9 | aicpu_launch_manager.h strncpy_s x3 | 失败时目标串清空降级(构造函数无返回值) | ### 6. plf_debug_config 架构迁移与线程安全修复 - **架构迁移**:plf_debug_config 从 legacy 迁入 base_comm,常量与声明并入 plf_debug_config.h(自包含,include hccl/base.h),config_plf_log.h 改为 include 转发(仅保留 PLF_CONFIG_* 宏),依赖方向变为 legacy→base_comm - **线程安全**:GetPlfDebugConfigValue 用 std::call_once + std::atomic<u64> 替代裸 static 变量,修复多线程 data race;SetPlfDebugConfigValue 同步改为 atomic store - plf_debug_config.h 去除对 legacy config_plf_log.h 的反向依赖 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. 本地编译验证通过(build.sh --pkg -j8,Build pkg success) 2. hccl-vm 模拟器 RDV 全量回归(30 条用例,aicpu 10/10 通过、ccu_sched 8/8 通过、ccu_ms 9/12 通过,3 条失败为 topo 144/188 模拟器环境问题,与 PR 改动无关) 3. 上游 CI 全绿(UT_Test / ST_Test / PreSmoke_A900 / PreSmoke_A3 均 SUCCESS) 补充的UT用例: NA(本次为失败路径修复,不改变成功路径行为,不新增接口) ## 文档更新 NA ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签([fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4509 | 24 天前 | |
fix:修复6类安全函数返回值丢弃与legacy架构违规问题 Co-authored-by: sunwenxuan<3201087621@qq.com> # message auto-generated for no-merge-commit merge: !4509 merge master into master fix:修复6类安全函数返回值丢弃与legacy架构违规问题 Created-by: sunwenxuan Commit-by: sunwenxuan Merged-by: cann-robot Description: ## 描述 本 PR 针对评审提出的安全函数返回值丢弃问题(H-D7 系列)与 rank_graph 函数内 static 变量线程安全问题(H-D5-2)做最小化修复:不改变成功路径行为,不调整底层 return 语义,全部修改为失败路径的显式处理或 (void) 显式标注。 ### 1. H-D7-10/11: local_ub_rma_buffer.cc 构造函数 key 的 memcpy_s 返回值丢弃 - 两个构造函数中 memcpy_s(key, HRT_UB_MEM_KEY_MAX_LEN, reqReg.key, ...) 返回值丢弃,key 拷贝失败会静默导致 UB RMA key 错误 - 修复:检查返回值,失败时 THROW<InvalidParamsException>,与同文件拷贝构造函数既有检查模式一致 ### 2. H-D7-12: topo_addr_info 6 个 C 文件安全函数返回值丢弃(33 处) - hal.c / product_card.c / product_pod.c / product_server.c / rank_info_types.c / topo.c 中 memset_s/sprintf_s/strcpy_s/memcpy_s 返回值丢弃 - 修复:显式 (void) 标注(与项目既有风格一致,如 hal.c HalGetUBEntityList),零行为改变 - 特例 topo.c GetTopoFilePathFromFile:memset_s 失败路径存在真实资源泄漏(fileBuf/fp 未释放,且未初始化内存被 fread 读取),补充 free(fileBuf); fclose(fp); return -1 - 特例 hal.c 的 sprintf_s davinci_dev 和 sprintf_s server_id:缓冲区远大于结果,失败分支不可达,统一改为 (void) 标注 ### 3. H-D5-2: rank_graph 函数内 static vector 跨调用 mutate - GetTopoInstsByLayer 内 static std::vector<uint32_t> sTopoInstList 为全局唯一,多 RankGraphV1 实例并发调用时互相覆盖,data() 指针跨调用失效 - 修复:改为成员 topoInstsVec_,每个实例拥有独立缓冲;单实例调用行为不变 ### 4. H-D7-1: hccl_kernel_launch_aicpu.cc P2P kernel 参数填充安全函数返回值丢弃(5 处) - LaunchP2pExec 与 group 模式的 memset_s/memcpy_s 统一包 CHK_SAFETY_FUNC_RET(函数返回 HcclResult,宏合法) ### 5. H-D7-2/4/5/6/8/9: dfx/日志/名称截断类安全函数返回值丢弃 | 编号 | 文件 | 修复方式 | |------|------|---------| | H-D7-2 | channel_manager.cc strncpy_s x2 | CHK_SAFETY_FUNC_RET | | H-D7-4 | hccl_one_sided_service.cc memset_s x2 | CHK_SAFETY_FUNC_RET | | H-D7-5 | aicpu_profiling_manager.cc memset_s | CHK_SAFETY_FUNC_RET | | H-D7-6 | aicpu_kfc_process.cc memset_s | (void) 标注(destSize==count,不可能失败) | | H-D7-8 | hccl_socket.cc Close() strcpy_s | if + HCCL_ERROR + tag 清空(不跳过 abort) | | H-D7-9 | aicpu_launch_manager.h strncpy_s x3 | 失败时目标串清空降级(构造函数无返回值) | ### 6. plf_debug_config 架构迁移与线程安全修复 - **架构迁移**:plf_debug_config 从 legacy 迁入 base_comm,常量与声明并入 plf_debug_config.h(自包含,include hccl/base.h),config_plf_log.h 改为 include 转发(仅保留 PLF_CONFIG_* 宏),依赖方向变为 legacy→base_comm - **线程安全**:GetPlfDebugConfigValue 用 std::call_once + std::atomic<u64> 替代裸 static 变量,修复多线程 data race;SetPlfDebugConfigValue 同步改为 atomic store - plf_debug_config.h 去除对 legacy config_plf_log.h 的反向依赖 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. 本地编译验证通过(build.sh --pkg -j8,Build pkg success) 2. hccl-vm 模拟器 RDV 全量回归(30 条用例,aicpu 10/10 通过、ccu_sched 8/8 通过、ccu_ms 9/12 通过,3 条失败为 topo 144/188 模拟器环境问题,与 PR 改动无关) 3. 上游 CI 全绿(UT_Test / ST_Test / PreSmoke_A900 / PreSmoke_A3 均 SUCCESS) 补充的UT用例: NA(本次为失败路径修复,不改变成功路径行为,不新增接口) ## 文档更新 NA ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [x] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签([fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [x] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [x] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [x] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [x] 🚀 预约 前冒烟 用例前的必要检查 - [x] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [x] 🔧 代码已通过compile,编译无错误,无告警 - [x] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [x] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [x] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4509 | 24 天前 |