已关闭
[Bug-Report|缺陷反馈]: aclnnSinc/aclnnInplaceSinc/aclnnTriangularSolve 用户入参判空返回 561103 而非文档契约 161001 #3359
liuhanwen8创建于 28 天前关闭于 18 天前
28 天前 添加了label:bug-report
陈思
27 天前 评论:
27 天前 评论:
您好,感谢反馈!
问题分析
已核对 ops-math 固定提交 b6c9f6922c18d42230fd4a993722fef247ef91ac,三处用户 Tensor 入参判空确实返回了 ACLNN_ERR_INNER_NULLPTR(561103):aclnnSinc 的 CheckParams、aclnnInplaceSinc 的 CheckInplaceParams,以及 aclnnTriangularSolve 的 CheckParams。这些状态由 GetWorkspaceSize 原样返回,并非只有日志打印成内部错误码;校验发生在计算任务构建之前,因此问题位于公共 API 参数检查层。Sinc 实现、TriangularSolve 实现
接口文档对这些必需 Tensor 入参为空规定返回 ACLNN_ERR_PARAM_NULLPTR(161001),现有分支与该约定不一致,会影响调用方区分参数错误与内部错误。Sinc 文档、TriangularSolve 文档
处理方向
可行的修正是在上述三处将用户入参判空的返回值改为 ACLNN_ERR_PARAM_NULLPTR,并同步调整对应负向用例;内部临时 Tensor 创建失败等分支仍应保留内部错误码,避免将内部故障误归为用户参数问题。
另外,TriangularSolve 的 mOut 需要单独区分:当前实现允许它为 nullptr,并相应跳过该输出的检查和拷贝,现有用例也期望成功。因此本次必需参数判空应覆盖 self、A、xOut,不能因返回码表列出了 mOut 就把可选输出改成必填;该表述也需要与现有可选语义对齐。我们会继续跟踪相关接口与文档的一致性问题。


陈思
27 天前 评论:
27 天前 评论:
/assign tan_xin


27 天前 将 tan_xin 设为负责人
18 天前 关闭了 issue
18 天前 添加了label:resolved
Describe the current behavior / 问题描述 (Mandatory / 必填)
aclnnSinc/aclnnInplaceSinc/aclnnTriangularSolve的用户入参判空分支返回内部错误码 561103(ACLNN_ERR_INNER_NULLPTR),而接口文档明确声明应返回 161001(ACLNN_ERR_PARAM_NULLPTR):math/sinc/op_api/aclnn_sinc.cpp:105:CHECK_RET(CheckNotNull(self, out), ACLNN_ERR_INNER_NULLPTR);math/sinc/op_api/aclnn_sinc.cpp:118:OP_CHECK_NULL(self, return ACLNN_ERR_INNER_NULLPTR);math/triangular_solve/op_host/op_api/aclnn_triangular_solve.cpp:125:CHECK_RET(CheckNotNull(self, A, xOut), ACLNN_ERR_INNER_NULLPTR);文档契约(两算子文档均声明):
math/sinc/docs/aclnnSinc&aclnnInplaceSinc.md返回码表:ACLNN_ERR_PARAM_NULLPTR 161001 — 传入的 self 或 out 是空指针math/triangular_solve/docs/aclnnTriangularSolve.md返回码表:ACLNN_ERR_PARAM_NULLPTR 161001 — 传入的 self、A、xOut、mOut 中存在空指针同族正确对照:
math/sin/op_api/aclnn_sin.cpp:74CHECK_RET(CheckNotNull2Tensor(self, out), ACLNN_ERR_PARAM_NULLPTR);(sinc 与 sin 同属一元数学函数族、检查形态一致,仅错误码不同,差异属遗漏非设计)。族内先例 #2501(aclnnArange 空指针预期 161001 实报 561103,已闭环修复)。影响:内部错误码泄漏到用户面,按 161001 设计的负向用例/监控漏判,并将「用户入参为空」误归因为框架内部异常。
Environment Information / 环境信息 (Mandatory / 必填)
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
// self/out 为合法 FLOAT{3,4};tsolve 为 self{3,1}、A{3,3}、xOut{3,1}、mOut{3,3} aclnnSincGetWorkspaceSize(nullptr, out, &ws, &ex); // 期望 161001 aclnnInplaceSincGetWorkspaceSize(nullptr, &ws, &ex); // 期望 161001 aclnnTriangularSolveGetWorkspaceSize(nullptr, A, false, false, false, xOut, mOut, &ws, &ex); // 期望 161001Describe the expected behavior / 预期结果 (Mandatory / 必填)
三处判空分支返回
ACLNN_ERR_PARAM_NULLPTR(161001),与文档返回码表及同族 aclnnSin 一致。建议修复:
aclnn_sinc.cpp:105/118、aclnn_triangular_solve.cpp:125改返ACLNN_ERR_PARAM_NULLPTR。Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
910_93 / CANN 9.2.0 实测:
注:
561102为ACLNN_ERR_INNER_NOT_TRANS_EXECUTOR,本问题实际返回码为561103(ACLNN_ERR_INNER_NULLPTR)。