已合并
[fix] 替换 deprecated aclrtSetExceptionInfoCallback 为新接口 Register/Unregister #4542
[fix] 替换 deprecated aclrtSetExceptionInfoCallback 为新接口 Register/Unregister #4542
已合并
zengls创建于 10 天前
zengls
10 天前

描述

runtime 头将 aclrtSetExceptionInfoCallback 标记为 deprecated(-Werror=deprecated-declarations 导致编译失败),需替换为新接口 aclrtExceptionInfoCallbackRegister / aclrtExceptionInfoCallbackUnregister。

新接口语义(对照 runtime/src/acl/aclrt_impl/callback.cpp 实现):

  • Register(callback) 与 Unregister(callback) 均带参,且 callback 不接受 nullptr(ACL_REQUIRES_NOT_NULL_RET_INPUT_REPORT 直接返回 ACL_ERROR_RT_PARAM_INVALID)。
  • 注册和注销需传同一个 callback 指针:runtime 内部用它算 regName 定位记录,再 rtRegTaskFailCallbackByModule(regName, callback/nullptr)。
  • 因此旧接口"传 nullptr 即注销"的约定在新接口下不成立,注销必须显式传回当初注册的 callback。

改动映射规则:

  • 注册回调:aclrtSetExceptionInfoCallback(callback) → aclrtExceptionInfoCallbackRegister(callback)
  • 注销回调:aclrtSetExceptionInfoCallback(nullptr) → aclrtExceptionInfoCallbackUnregister(<当初注册的 callback>)

改动范围:

  1. src/coll_communicator_mgr/dfx/taskException/host/hcclCommTaskException.cc:Register 调 aclrtExceptionInfoCallbackRegister(ProcessCallback);析构与 UnRegister 两处注销调 aclrtExceptionInfoCallbackUnregister(ProcessCallback)。
  2. src/legacy/.../orion_adapter_rts.cc + orion_adapter_rts.h:原 HrtRegTaskFailCallbackByModule 单函数靠 callback==nullptr 区分注册/注销,新接口下 nullptr 注销拿不到 callback。拆为两个函数:
    • HrtRegTaskFailCallbackByModule(callback) 调 aclrtExceptionInfoCallbackRegister(callback)
    • HrtUnregTaskFailCallbackByModule(callback) 调 aclrtExceptionInfoCallbackUnregister(callback)
      两函数各自传 callback,不再依赖 nullptr 区分意图。
  3. src/legacy/.../task_exception_handler.cpp:Register() 仍调 HrtReg(Process);UnRegister() 由传 nullptr 改为调 HrtUnreg(Process),传回当初注册的 callback。
  4. test/stub/depends/include/acl/acl_rt.h:追加新接口声明并标注 Unregister 带参(保留旧声明兼容)。
  5. 4 个 stub 实现文件(llt_next_orion_stub/rts_stub_ut/rts_stub/aclrt_exception_stub)同步提供新符号,Unregister 签名带参。
  6. taskException.md / taskException_en.md 文档同步更新接口名与参数。

变更类型

请选择本次引入的变更类型:

关联的Issue

NA

测试

已完成的测试用例和场景:

  1. 本地 UT 编译验证(make hccl_ut_task_exception)确认 stub 新符号链接通过、hcclCommTaskException.cc 编译无报错。
  2. CI 编译验证(runtime 头已有新接口声明,deprecated 告警消除,Unregister 带参与真实 CANN acl_rt.h 签名一致)。

补充的UT用例:
本次为接口替换,原有 TaskException 相关 UT 用例通过 stub 覆盖 Register/Unregister 路径,未新增用例。

文档更新

更新了 taskException.md / taskException_en.md 中接口名与参数描述,与代码保持一致。

合入检查

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 zengls 的贡献)
Zzengls
10 天前 创建了 pull request,commit 3f2c267c
atomgit-bot
atomgit-bot
10 天前 评论:

🤖 AI Code Review

⚠️ 审查未能完成

本次代码审查未能完成,可能是临时性故障。

你可以在评论区输入 /ai summary 重新发起审查。若多次失败,请联系管理员并附上下方追踪 ID。

追踪 ID: task-176571-run-169478

likedislike
atomgit-bot
atomgit-bot
10 天前 评论:

代码审查

所有 7 个文件已逐一审查完毕。以下是审查结论。


关闭摘要

优先级 数量
P0 0
P1 1
P2 0
P3 0

各文件审查结果:

文件 结论
src/coll_communicator_mgr/dfx/taskException/host/hcclCommTaskException.cc 无问题 — Register/UnRegister/析构函数三处替换正确
src/legacy/ascend950/unified_platform/external_system/orion_adapter_rts.cc P1 问题 — 缺少 nullptr 分流到 Unregister
test/hccl_vm/src/proxy/aclrt_exception_stub.cc 无问题
test/legacy/st/fwk/rts_stub/rts_stub.cc 无问题
test/legacy/ut/unified_platform/external_system/system/rts_stub_ut.cc 无问题
test/stub/depends/include/acl/acl_rt.h 无问题 — 新接口声明正确,保留旧声明兼容
test/ut/stub/llt_next_orion_stub.cc 无问题

总体风险评估: 本次变更整体风险可控,但存在一项 P1 级逻辑缺陷——HrtRegTaskFailCallbackByModule 未按 PR 描述要求对 callback == nullptr 做分流,导致 TaskExceptionHandler::UnRegister() 调用时实际执行的是注册 nullptr 而非注销回调,task exception 注销逻辑完全失效。该问题需要在合入前修复。

类型 数量
🔴 阻塞 1
🟡 建议 0

⛔ 需要修改

likedislike
CANN-robotCANN-robot成员
10 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
10 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here
For more, you also can visit HICANN


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
src/coll_communicator_mgr 颜业峰, dingweiqin_57 (2/2) dingweiqin_57 (1/1)
src/legacy/ascend950/framework dingweiqin_57, 颜业峰 (2/2) dingweiqin_57 (1/1)
src/legacy/ascend950/unified_platform Innoecho, 颜业峰 (2/2) Innoecho (1/1)
test Innoecho, dingweiqin_57, 颜业峰 (3/2) Innoecho, dingweiqin_57 (2/1)
test/hccl_vm 颜业峰, whk19940509 (2/2) whk19940509 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

gcw_xljEvKEv, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了162条消息 查看更多
whk_24
whk_24成员
7 天前 评论:

/approve

likedislike
Innoecho成员
7 天前 评论:

/approve

likedislike
57_Viking
57_Viking成员
6 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
6 天前 添加了label:lgtmapproved
CANN-robotCANN-robot成员
6 天前 合入了pull request