| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[fix] 修复静态告警:补齐memset_s/snprintf_s返回值检查及越界风险 Co-authored-by: zhengjinwei_y<zhengjinwei2@huawei.com> # message auto-generated for no-merge-commit merge: !4859 merge fix_static_warning into master [fix] 修复静态告警:补齐memset_s/snprintf_s返回值检查及越界风险 Created-by: zhengjinwei_y Commit-by: zhengjinwei_y Merged-by: cann-robot Description: ## 描述 ### 简要描述 修复静态告警:补齐 memset_s/snprintf_s 返回值检查及越界风险,修复 notify 数量校验返回值与线程映射返回值问题,提取 Buffer 构造函数重复代码,并修复 HcclCreateSubCommConfigV2 异常路径死锁。 ### 问题描述 1. **profiling_handler_lite.cc**: ReportHcclTaskDetails 中 memset_s(taskInfos, ...) 未检查返回值,静态检查告警,且失败时无异常处理。 2. **hcomm_adapter_hccp.cc**:HrtRaDumpJettyContext 中 snprintf_s 未检查返回值,静态检查告警。 3. **buffer.cc**:构造函数中 snprintf_s(memInfo_, sizeof(memInfo_), strlen(memInfo), "%s", memInfo) 的 count 参数误用 strlen(memInfo),当源串长度 ≥ 256(即 sizeof(memInfo_))时 count >= destMax,触发 snprintf_s 运行时约束违例,存在越界风险;且无返回值检查;两个构造函数存在完全相同的 memInfo 初始化代码,重复代码问题;memInfo 过长时 snprintf_s 会静默截断而非报错,无法保证完整拷贝;memInfo 为空字符串时 count=0 存在边界行为不确定性。 4. **notify_aicpu_mgr.cc**:NotifyAlloc 中仅校验 ParseBinNotifys 返回值,未校验实际分配数量是否满足预期;且返回值直接透传 ret,当 notifys_.size() 不足时仍可能返回 HCCL_SUCCESS。 5. **thread.cc**:AddThreadHandleToMap 检测到映射已存在时仅打印日志未返回,缺少错误返回。 6. **op_base_v2.cc**:HcclCreateSubCommConfigV2 在获取 groupParamsLock(非递归 std::mutex)后调用 CreateSubComm,失败时 CHK_PRT_BREAK 跳过 unlock() 直接进入 errorFlag 分支,随后调用 HcclCommDestroyV2 再次获取同一把锁导致死锁。 ### 解决方案 1. **profiling_handler_lite.cc**:补齐 memset_s 返回值检查,失败时抛出 InternalException,异常信息打印全部入参(dest、destMax、c、count)及返回值 ret。参考同文件 310 行已有的 THROW<InternalException> 实现。 2. **hcomm_adapter_hccp.cc**:参考 hccl/src/ops/op_common/op_common.cc:253 的 CHK_PRT_RET 模式补齐 snprintf_s 返回值校验,失败时打印全部入参(dest、destMax、count、contextVal)及返回值 ret。 3. **buffer.cc**:将两个构造函数中重复的 memInfo 初始化逻辑提取为 protected 方法 SetMemInfo;合并 nullptr 与空字符串判断提前跳过,直接置 '\0' 返回,避免 count=0 边界不确定性;先用 strlen 检查源字符串长度,长度 ≥ sizeof(memInfo_) 时抛出 InternalException,避免静默截断;snprintf_s 的 count 参数使用实际字符串长度 memLen(已保证 < destMax),并补齐返回值检查,失败时抛出 InternalException(构造函数抛异常有 rtsq_base.cc:25,34 先例)。 4. **notify_aicpu_mgr.cc**:补充 notifys_.size() < notifyNum + notifySize 数量校验,错误日志打印 ret、期望数量与实际数量;返回值从 ret 改为 HCCL_E_INTERNAL,确保数量不足时明确返回内部错误。 5. **thread.cc**:映射已存在时补齐 return HCCL_E_PARA。 6. **op_base_v2.cc**:在 errorFlag 分支调用 HcclCommDestroyV2 之前,先调用 groupParaLock.unlock() 释放锁,消除非递归 std::mutex 的重复加锁死锁。 ### 影响范围 - 修复:补齐 3 处安全函数(memset_s/snprintf_s)返回值检查,消除静态告警 - 修复:buffer.cc SetMemInfo 增加源字符串长度预检查,防止 memInfo 过长时静默截断;合并 nullptr 与空字符串提前跳过,避免 count=0 边界不确定性 - 修复:notify_aicpu_mgr.cc notify 数量不足时正确返回 HCCL_E_INTERNAL 而非透传可能为 SUCCESS 的 ret - 修复:thread.cc 映射已存在时正确返回 HCCL_E_PARA - 修复:HcclCreateSubCommConfigV2 异常路径下不再死锁,HcclCommDestroyV2 可正常获取锁完成清理 - 重构:提取 Buffer::SetMemInfo 消除两个构造函数的重复代码,便于后续维护 - 兼容性:成功路径不受影响,仅异常/边界路径行为变更 - 安全性:消除缓冲区越界风险、静默截断隐患与异常路径下进程永久挂起风险 ### 新增用例 - 无新增 UT(本次为返回值检查补齐、安全函数参数修正、返回值修正、重复代码消除与死锁修复,无新增接口) - 验证:pre-commit 检查(clang-format + OAT)全部通过 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. pre-commit 检查(clang-format + OAT)全部通过,无格式问题与合规问题。 2. clang-format 仅格式化改动行,未动历史代码。 补充的UT用例: NA(本次为返回值检查补齐与安全函数参数修正,无新增接口) ## 文档更新 NA ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4859 | 1 个月前 | |
[fix] 修复静态告警:补齐memset_s/snprintf_s返回值检查及越界风险 Co-authored-by: zhengjinwei_y<zhengjinwei2@huawei.com> # message auto-generated for no-merge-commit merge: !4859 merge fix_static_warning into master [fix] 修复静态告警:补齐memset_s/snprintf_s返回值检查及越界风险 Created-by: zhengjinwei_y Commit-by: zhengjinwei_y Merged-by: cann-robot Description: ## 描述 ### 简要描述 修复静态告警:补齐 memset_s/snprintf_s 返回值检查及越界风险,修复 notify 数量校验返回值与线程映射返回值问题,提取 Buffer 构造函数重复代码,并修复 HcclCreateSubCommConfigV2 异常路径死锁。 ### 问题描述 1. **profiling_handler_lite.cc**: ReportHcclTaskDetails 中 memset_s(taskInfos, ...) 未检查返回值,静态检查告警,且失败时无异常处理。 2. **hcomm_adapter_hccp.cc**:HrtRaDumpJettyContext 中 snprintf_s 未检查返回值,静态检查告警。 3. **buffer.cc**:构造函数中 snprintf_s(memInfo_, sizeof(memInfo_), strlen(memInfo), "%s", memInfo) 的 count 参数误用 strlen(memInfo),当源串长度 ≥ 256(即 sizeof(memInfo_))时 count >= destMax,触发 snprintf_s 运行时约束违例,存在越界风险;且无返回值检查;两个构造函数存在完全相同的 memInfo 初始化代码,重复代码问题;memInfo 过长时 snprintf_s 会静默截断而非报错,无法保证完整拷贝;memInfo 为空字符串时 count=0 存在边界行为不确定性。 4. **notify_aicpu_mgr.cc**:NotifyAlloc 中仅校验 ParseBinNotifys 返回值,未校验实际分配数量是否满足预期;且返回值直接透传 ret,当 notifys_.size() 不足时仍可能返回 HCCL_SUCCESS。 5. **thread.cc**:AddThreadHandleToMap 检测到映射已存在时仅打印日志未返回,缺少错误返回。 6. **op_base_v2.cc**:HcclCreateSubCommConfigV2 在获取 groupParamsLock(非递归 std::mutex)后调用 CreateSubComm,失败时 CHK_PRT_BREAK 跳过 unlock() 直接进入 errorFlag 分支,随后调用 HcclCommDestroyV2 再次获取同一把锁导致死锁。 ### 解决方案 1. **profiling_handler_lite.cc**:补齐 memset_s 返回值检查,失败时抛出 InternalException,异常信息打印全部入参(dest、destMax、c、count)及返回值 ret。参考同文件 310 行已有的 THROW<InternalException> 实现。 2. **hcomm_adapter_hccp.cc**:参考 hccl/src/ops/op_common/op_common.cc:253 的 CHK_PRT_RET 模式补齐 snprintf_s 返回值校验,失败时打印全部入参(dest、destMax、count、contextVal)及返回值 ret。 3. **buffer.cc**:将两个构造函数中重复的 memInfo 初始化逻辑提取为 protected 方法 SetMemInfo;合并 nullptr 与空字符串判断提前跳过,直接置 '\0' 返回,避免 count=0 边界不确定性;先用 strlen 检查源字符串长度,长度 ≥ sizeof(memInfo_) 时抛出 InternalException,避免静默截断;snprintf_s 的 count 参数使用实际字符串长度 memLen(已保证 < destMax),并补齐返回值检查,失败时抛出 InternalException(构造函数抛异常有 rtsq_base.cc:25,34 先例)。 4. **notify_aicpu_mgr.cc**:补充 notifys_.size() < notifyNum + notifySize 数量校验,错误日志打印 ret、期望数量与实际数量;返回值从 ret 改为 HCCL_E_INTERNAL,确保数量不足时明确返回内部错误。 5. **thread.cc**:映射已存在时补齐 return HCCL_E_PARA。 6. **op_base_v2.cc**:在 errorFlag 分支调用 HcclCommDestroyV2 之前,先调用 groupParaLock.unlock() 释放锁,消除非递归 std::mutex 的重复加锁死锁。 ### 影响范围 - 修复:补齐 3 处安全函数(memset_s/snprintf_s)返回值检查,消除静态告警 - 修复:buffer.cc SetMemInfo 增加源字符串长度预检查,防止 memInfo 过长时静默截断;合并 nullptr 与空字符串提前跳过,避免 count=0 边界不确定性 - 修复:notify_aicpu_mgr.cc notify 数量不足时正确返回 HCCL_E_INTERNAL 而非透传可能为 SUCCESS 的 ret - 修复:thread.cc 映射已存在时正确返回 HCCL_E_PARA - 修复:HcclCreateSubCommConfigV2 异常路径下不再死锁,HcclCommDestroyV2 可正常获取锁完成清理 - 重构:提取 Buffer::SetMemInfo 消除两个构造函数的重复代码,便于后续维护 - 兼容性:成功路径不受影响,仅异常/边界路径行为变更 - 安全性:消除缓冲区越界风险、静默截断隐患与异常路径下进程永久挂起风险 ### 新增用例 - 无新增 UT(本次为返回值检查补齐、安全函数参数修正、返回值修正、重复代码消除与死锁修复,无新增接口) - 验证:pre-commit 检查(clang-format + OAT)全部通过 ## 变更类型 请选择本次引入的变更类型: - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [ ] 📋 其他,请描述: ## 关联的Issue NA ## 测试 已完成的测试用例和场景: 1. pre-commit 检查(clang-format + OAT)全部通过,无格式问题与合规问题。 2. clang-format 仅格式化改动行,未动历史代码。 补充的UT用例: NA(本次为返回值检查补齐与安全函数参数修正,无新增接口) ## 文档更新 NA ## 合入检查 - [x] 🧐 已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 - [ ] 🔍 邀请 committer评论/lgtm前的必要检查 - [x] 🏷️ 标题中使用了合适的类型标签(如:[feat], [fix]) - [x] 📄 代码修改内容已简要描述,相关文档已更新 - [x] 📝 代码注释已更新,代码遵循项目整体代码风格 - [ ] 🧪 代码UT测试已更新,覆盖率已达标 - [x] 🔬 验证方法已更新到"测试"部分 - [x] 🛠️ 代码已通过静态分析工具检查,无错误 - [ ] 👥 代码检视/code review/同行评议和必要的代码串讲,确保代码质量 - [ ] ✅ 代码检视意见已处理或答复,无未处理的检视意见 - [ ] 🚀 预约 前冒烟 用例前的必要检查 - [ ] ✔️ 代码已有committer的/lgtm 和 模块committer的/lgtm评论 - [ ] 🔧 代码已通过compile,编译无错误,无告警 - [ ] 🖥️ 代码已通过基本功能本地测试或者在线测试,确保基本功能正常 - [ ] 🎯 预约 approver评论/approve,正式合入前的必要检查 - [ ] 📊 前冒烟 用例已全量通过 - [ ] 📦 新增功能已同步补充基本功能测试用例到前冒烟里 See merge request: cann/hcomm!4859 | 1 个月前 | |
[ut]确定性计算strict模式放行910_93配套UT修改 | 1 个月前 | |
[build] License Header Co-authored-by: ouyangcaike<ouyangcaike@h-partners.com> # message auto-generated for no-merge-commit merge: !4556 merge build/oat into master [build] License Header Created-by: ouyangcaike Commit-by: ouyangcaike Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 全仓C/C++、CMake、Python、Shell文件规范头部License的使用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [ ] 📝 文档更新 - [x] 📋 其他,请描述:工程 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR不涉及Issue,可填写"NA"。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于构造对应xx测试用例、二级冒烟、算子泛化等。--> 已完成的测试用例和场景: 1. 编译成功 2. 全量拦截项通过 补充的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!4556 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 个月前 |