快速结论:该报错发生在 GLM-5.3-Flash(fp8、TP=4、超长 max_model_len)首次进行 ≥~24.6K token 的多块 chunked prefill 时,所有 TP rank 在 FlashInfer MNNVL 通信缓冲清理点(signal_pads 的 cuMemFree)抛出 sticky CUDA ILLEGAL_ADDRESS (700);由于是异步内核导致、同步 API 处才浮现,应优先排查 FlashInfer MNNVL allreduce 通信路径,而不是 compute kernel。
适用环境:Issue 中确认参与的环境为:vLLM v0.30.0(base image nightly-7f1a5398,2026-09-24)、flashinfer 0.6.18.post1、模型 GLM-5.3-Flash(fp8 量化权重)、TP=4、NVIDIA H20、enable_flashinfer_autotune=True(--optimization-level 1 默认开启)、dcp_comm_backend=ag_rs(v0.30.0 默认);并全程使用 --disable-custom-all-reduce。CUDA_LAUNCH_BLOCKING=1 仅用于诊断,不是崩溃前提。
最快修复方案:暂无确认的一步修复方案。Issue 报告者的复现实验在“更换环境 + 合成 prompt”条件下未能复现(5 个 22.9K–68.6K token 长 prompt 全部返回 HTTP 200),因此原报告中的崩溃条件尚未被独立确认。
注意事项:复现者使用的镜像、vLLM commit(81198e97b)、flashinfer 版本(0.7.0.post1)、torch 版本(2.13.0+cu130)与报告原环境不同;且复现者使用合成重复句子,而原 Issue 未提供 prompt 文本,如果崩溃依赖 prompt 内容,则该复现不会触发。同时,复现者在默认设置下拿到的是 backend=trtllm 路径,需显式设置 VLLM_FLASHINFER_ALLREDUCE_BACKEND=mnnvl 才能进入报告所说的 MNNVL 路径;该路径下仍未复现崩溃。
问题场景
用户使用 vLLM v0.30.0 部署 GLM-5.3-Flash(fp8 量化权重),--tensor-parallel-size 4、--max-model-len 262144,配合 flashinfer 0.6.18.post1 与 dcp_comm_backend=ag_rs。在引擎完整启动后,发送单条 prompt 约 24,601 token 的 completion 请求(max_tokens 很小,如 64–1500,temperature 0),触发首次 ≥24.6K token 的多块 chunked prefill。短请求(13 token)正常返回,不触发崩溃。崩溃在 5 次独立引擎重启中 5/5 复现,且已排除 MTP speculative decoding、comm fusion、fp8 custom ops、norm+act fusion 等配置项。
报错原文
CUDA_ERROR_ILLEGAL_ADDRESS (700)
FlashInfer MNNVL allreduce: runtime CUDA ILLEGAL_ADDRESS (700) surfacing at signal_pads cuMemFree during multi-block long prefill — persists after disabling MTP / comm fusion / fp8 custom ops / norm+act fusion
num_computed_tokens=[8064]
kv_cache_usage_perc ~0.049–0.064
flashinfer/comm/mnnvl.py:836 __del__ → checkCudaErrors(cuda.cuMemFree(signal_pads_dev))
HTTP 500 EngineCore encountered an issue. See stack trace (above)
All TP0–3 workers exit with CUDA_ERROR_ILLEGAL_ADDRESS (700)
原因分析
从崩溃签名看,第一段 8064-token chunked-prefill block 正常完成(num_computed_tokens=[8064]),崩溃落在后续 block;KV cache 使用率仅约 0.049–0.064,远未饱和,因此可以排除 KV cache 容量不足。错误最终在 flashinfer/comm/mnnvl.py:836 的 __del__ 中调用 cuMemFree(signal_pads_dev) 时以 sticky-700 形式浮现,而 CUDA_LAUNCH_BLOCKING=1 未能定位到具体的出错 kernel,这说明更可能是在 FlashInfer MNNVL 通信缓冲路径(UC / signal pads)中存在越界写,导致后续同步 API 处才报告错误,而非某个 compute kernel 本身出错。报告者同时确认,即使关闭 MTP、comm fusion、fp8 custom ops 和 norm+act fusion,崩溃仍按相同签名出现,因此这些优化项可能不是根因。需要强调的是,后续复现实验未能重现该崩溃,上述判断仍是基于原报告签名的可能原因,尚未被独立确认。
环境排查
- 确认 vLLM 版本是否为报告中的 v0.30.0(base image nightly-7f1a5398,2026-09-24)。
- 确认 flashinfer 版本是否为 0.6.18.post1;复现者使用了 0.7.0.post1,提示较新版本可能已修复该故障,但未用原镜像验证。
- 确认是否走的是 MNNVL 路径:检查启动日志中 FlashInfer Allreduce 初始化是否显示
backend=mnnvl;在默认auto下,_resolve_fi_ar_backend对 node-local group 可能返回trtllm,需要通过VLLM_FLASHINFER_ALLREDUCE_BACKEND=mnnvl强制。 - 确认 GPU 与拓扑是否为 4×NVIDIA H20、TP=4。
- 确认模型是否为 GLM-5.3-Flash fp8 量化权重;复现者使用的是 Hub 上的
zai-org/GLM-5.3-Flash(F8_E4M3,约 314B 参数),但无法确认与原报告内部路径是同一 revision。 - 确认是否保留
--disable-custom-all-reduce;报告指出即使禁用 custom all-reduce,FlashInfer/symm-mem 通信仍然活跃。 - 确认 prompt 长度是否达到约 24.6K token 并跨多个 chunked-prefill block;短请求不触发。
- 复现时可确认 attention / MLA prefill / MoE backend 选择是否与报告一致;复现者观察到的是
FLASHINFER_MLA_SPARSE_SM90、FLASH_ATTNMLA prefill、TRITON Fp8 MoE。
解决步骤
- 先按原报告环境核对 vLLM、flashinfer、模型和 GPU 拓扑,确认日志中确实初始化了 FlashInfer Allreduce
backend=mnnvl;如果默认是trtllm,该路径与报告不同,需要显式设置VLLM_FLASHINFER_ALLREDUCE_BACKEND=mnnvl才能进入报告所说的代码路径。 - 用单条约 24.6K token 的 prompt 请求 fresh 引擎,确认是否在第二个 chunked-prefill block 崩溃,并记录
num_computed_tokens、kv_cache_usage_perc、各 TP rank 退出码,以对齐崩溃签名。 - 如果目标是规避而非定位:在复现者环境中,将 vLLM 升级到 0.31.1rc1.dev88+g81198e97b、flashinfer 升级到 0.7.0.post1、torch 2.13.0+cu130 后未再复现;可优先尝试较新的 nightly 组合验证,但需注意这并非原 Issue 已验证的修复。
- 如果无法升级,可优先尝试避开 MNNVL allreduce 路径,确认是否换回默认
trtllm后端后不再触发(复现者默认即trtllm,但该条件下未做长 prompt 压力验证,因此只能作为规避方向)。 - 继续保留
--disable-custom-all-reduce、关闭 MTP / comm fusion / fp8 custom ops / norm+act fusion 的配置逐一验证;原报告中这些配置均未能消除崩溃。
验证方法
在 fresh 引擎进程上发送单条 ≥24.6K token 的长 prompt,观察是否仍出现 CUDA_ERROR_ILLEGAL_ADDRESS (700)、EngineDeadError、EngineCore encountered an issue、signal_pads 以及所有 TP rank 同点退出。如果请求稳定返回 HTTP 200,且服务端日志不再出现上述签名,则说明在当前环境组合下未复现该问题;但仍需注意复现者使用的是合成 prompt,原报告的具体 prompt 内容未知,若崩溃依赖 prompt 内容,则仅靠 HTTP 200 不足以完全排除。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


