[ERROR] RUNTIME: [task_recycle_cqrpt_base.cc:94] PrintTaskErrorMsg:Task run failed, stream_id=144, pos=4,
task_sn=31, sqe_type=5(aicpu_d), errType=0x1(task exception), sqSwStatus=0x20004
[ERROR] RUNTIME: [device_error_proc.cc:1270] ProcessStarsAicpuErrorInfo:
The error from device(chipId:0, dieId:0), serial number is 50550,
an exception occurred during AICPU execution, stream_id=144, errcode=2, msg:execute kernel inner error
一、问题描述(必填)
aclnnBitwiseAndTensorOut(aclnnInplaceBitwiseAndTensorOut共享同一实现,同根因)multithread;压测日期:2026-11-14;执行卡号:1(Ascend 950PR / CANN 9.3.0)核心现象:多线程共享一个 aclrtContext 并发执行同一合法算子调用时,AICPU task 概率性异常,随后设备进入错误遏制态(后续所有 aclrtMalloc 连锁失败 507899)
二、问题复现步骤(必填)
最小独立复现程序(不依赖 fuzz 框架,附件
bc_thread_concurrency_repro.cpp,约 120 行):// N 个 std::thread 共享一个 aclrtContext,每线程独立 stream,循环执行: // 创建 3 个小张量(INT16 [2,2], BROADCAST×2 + CONTINUOUS) → GWS → execute → sync → destroy // 参数完全合法(BROADCAST 输入 md 标注 √,单线程 100% 通过)bc_thread_concurrency_repro.cpp编译(或直接使用 fuzz 框架附件 CPP)./bc_thread 5 200(5 线程 × 200 迭代)复现数据(同参数 INT16 BCAST+BCAST+CONT [2,2],环境 Ascend 950PR / CANN 9.3.0):
规律:失败概率随并发线程数和迭代次数递增;一旦触发,设备进入错误遏制态(后续
aclrtMalloc连锁失败 507899 = OOM 错误码);4-5 线程下几乎必定在 ~100 次总迭代内触发。失败证据(plog):
三、附件与证据(必填)
https://gitcode.com/Alice_zhou/issue/blob/main/artifacts/2026-11-14/aclnnBitwiseAndTensorOut_multithread.zip
💡 该问题由 fuzz 自动化压测平台发现,最小独立复现程序已验证(脱离框架仍复现),确认非测试框架缺陷而是 CANN 运行时层并发问题。
🔍 代码bug点定位(2026-11-14,结合独立最小复现验证)
测试框架复核(F1~F7):通过(详见 issue 正文第三节)
独立最小复现验证:
bc_thread_concurrency_repro.cpp)代码排查:
CheckParams正常,无并发相关问题
sqe_type=5(aicpu_d)),即 runtime/driver 层
定位分析:
aclrtContext并发执行小尺寸 AICPU 任务(高频 create/destroy +execute + sync 循环),概率性触发
sqSwStatus=0x20004task exception在高频并发 alloc/free 下的状态不一致
runtime/driver 团队分析(plog 中 task_sn=31, sqe_type=5 为 AICPU 任务,非 aiv/aic vector kernel)