已合并
feat: add binary dump of args as a debugging measure on AICPU exception #3815
rui创建于 7月24日
feat: add binary dump of args as a debugging measure on AICPU exception #3815
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 rui 的贡献)atomgit-bot
7月24日 评论:
7月24日 评论:
变更摘要
此 PR 针对 AICPU 异常场景新增维测手段。由于 rtAicpuKernelLaunchExWithArgs 接口固定传入 kernel=nullptr,导致 PrintAicpuErrorInfo 输出的 soName/kernelName/funcName 均为空串,无法定位出问题的算子。为此新增 DumpAicpuArgsForDfx 函数,将 Device 侧的 args buffer 通过 D2H 拷贝到 Host 端,按 uint64_t 分组打印二进制内容,同时输出 soNameAddr 和 kernelNameAddr,支持离线通过偏移还原算子名称。
主要改动
- 新增
DumpAicpuArgsForDfx静态函数:该函数负责从 Device 侧将 AICPU 任务的 args buffer(aicpuTaskInfo->comm.args)通过MemCopySync执行 D2H 拷贝,按ARGS_PER_STRING_MAX_LEN分组并以[AICPU_INFO]标签打印uint64_t格式的二进制数据,同时输出soName和funcName的地址指针,便于离线通过偏移量还原算子名称。 - 在
PrintAicpuErrorInfo中集成调用:在PrintAicpuErrorInfo函数中新增对DumpAicpuArgsForDfx(taskInfo, devId)的调用,确保在 AICPU 异常输出错误报告之前先 dump args 二进制内容。 - 引入
<sstream>头文件:为DumpAicpuArgsForDfx中使用std::stringstream拼接日志字符串提供支持。


不准确?
atomgit-bot
7月24日 评论:
7月24日 评论:
代码审查
经过对两个变更文件的全面审查,未发现需要报告的问题。
审查总结
- docs/zh/design/features/aicpu_dfx_analysis.md:新增的设计文档,包含问题分析、修复说明、定位步骤和测试结果。文档内容安全,不包含敏感信息、危险命令或不安全的配置指导。
- src/runtime/core/src/task/task_info/davinci/davinci_kernel_task.cc:新增
DumpAicpuArgsForDfx静态函数,在PrintAicpuErrorInfo中调用,用于将 Device 侧 args buffer 拷贝回 Host 并按 uint64_t 分组打印。该函数完全参照了已有的GetArgsInfo实现模式,内存管理正确(分配/释放配对、错误路径释放)、边界检查充分(通过CheckArgsSize校验最小尺寸)、错误处理完整(检查HostMemAlloc/MemCopySync返回值)。函数签名中的类型与调用方及CheckArgsSize参数完全匹配。
P0–P2 问题数: 0
P3 建议数: 0
整体风险评估: 低风险。纯增量维测代码,不修改任何现有逻辑,不影响正常执行路径。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


不准确?
7月24日 添加了label:cann-cla/yes
CANN-robot
7月24日 评论:
7月24日 评论:
此处折叠了134条消息 查看更多
7月28日 添加了label:lgtmapproved
7月28日 合入了pull request
8月6日 删除了label:ci-pipeline-passed
Pull Request
描述
PrintAicpuErrorInfo中 soName/kernelName/funcName 均为空串,异常时无法定位算子。新增
DumpAicpuArgsForDfx函数,参照 AICOREGetArgsInfo方式,将 Device 侧 args buffer D2H 拷贝并按 uint64_t 分组打印,同时输出 soNameAddr/kernelNameAddr,支持离线通过偏移还原算子名。变更类型
如何测试
rtAicpuKernelLaunchExWithArgs下发 KERNEL_TYPE_AICPU 任务,使用不存在的 kernelName 触发 Device 侧加载失败[AICPU_INFO]日志,通过soNameAddr - paramAddr计算偏移,从 args 二进制中还原 soName/kernelName核对清单