已关闭
[Bug-Report|缺陷反馈] check_kernel_ut.sh 解析多行 OPS_CATEGORY_LIST 恒空 + local_check.sh 管道吞错,全仓 kernel UT 检查形同虚设 #3105
不喜欢雨天ༀ创建于 9月9日关闭于 9月22日
9月9日 关联了pull request:fix(ci): parse multi-line OPS_CATEGORY_LIST and propagate kernel UT failure
9月9日 关联了pull request:fix(ci): parse multi-line OPS_CATEGORY_LIST and propagate kernel UT failure
陈思
9月9日 评论:
9月9日 评论:
/assign @2403_87936996


9月9日 将 2403_87936996 设为负责人
9月13日 关联了pull request:fix(ci): check_kernel_ut.sh 支持解析多行 OPS_CATEGORY_LIST
liuchenghao
9月14日 评论:
9月14日 评论:
【Multica 同步】状态:backlog(已建单跟踪);说明:该门禁脚本缺陷已同步至 Multica「CANN 算子开发迁移」项目跟踪;已知悉社区侧认领与在途修复,Multica 侧是否承接将先与社区对账协调,不与现有修复重复;详情:AI4ME-123


9月22日 关闭了 issue
问题
ops-math 仓库的两个本地门禁脚本存在连锁缺陷,导致 kernel UT 检查在任何情况下都不会真正执行测试,且失败时仍显示 PASS:
缺陷一:check_kernel_ut.sh 的 OPS_CATEGORY_LIST 解析恒空
scripts/ci/check_kernel_ut.sh:21:op_category_list=$(grep -oP 'set\(OPS_CATEGORY_LIST\s*\K".*"' $current_dir/$variables_cmake | sed 's/"//g')而
cmake/variables.cmake:233-238的实际声明是多行格式:set(OPS_CATEGORY_LIST "math" "conversion" "random" )单行 grep 无法匹配多行 set(),
op_categories恒为空数组 →valid_dirs恒空 →ops_name恒空 → 循环零次,任何文件的 kernel UT 都不会被触发,脚本静默 exit 0。缺陷二:local_check.sh 管道后取 tee 退出码
scripts/ci/local_check.sh:931:"${cmd_array[@]}" 2>&1 | tee "${PROJECT_ROOT}/logs/ut_kernel.txt"由于未开 pipefail,后续
$?取的是tee的退出码(恒 0)——即使 check_kernel_ut.sh 内部 build 失败,Summary 仍显示Kernel UT PASS。复现(本地 CANN 9.2.0)
echo "conversion/chunk_cat/tests/ut/op_kernel/test_chunk_cat.cpp" > pr_filelist.txt bash scripts/ci/check_kernel_ut.sh pr_filelist.txt # 修复前:零输出,exit 0 bash scripts/ci/local_check.sh -f pr_filelist.txt --llt-kernel-ut # 修复前:2 秒"PASS"(logs/ut_kernel.txt 为空)影响
修复验证
修复后(sed 范围解析 + 空列表快速失败 + pipefail 局部开启):
ASCEND_3RD_LIB_PATH=$PWD/third_party bash scripts/ci/check_kernel_ut.sh pr_filelist.txt # [EXECUTE_COMMAND] bash build.sh -u --opkernel --ops=chunk_cat ... 真实执行 910b/310p/950 三 soc,exit 0,1 test PASSED修复 PR 见关联。