快速结论:该报错出现在 macOS + WebGPU(Dawn)后端运行 llama.cpp 测试套件时,主要集中在 hy_v4 架构的评测与保存/加载状态测试中,进程直接崩溃(SIGSEGV / SIGBUS)。优先排查 WebGPU 后端对 hy_v4 架构的支持情况,以及 CI 中 Dawn 依赖与构建配置是否与本地一致。
适用环境:llama.cpp version 0.4.0-dev (build 10902, commit df03399b8);操作系统 macOS 26.6.2 (25G83);硬件为 GitHub-hosted macOS ARM64 runner,Apple M1 (Virtual);GGML 后端为 WebGPU(使用 Dawn);Runner image 为 macos-26-arm64。问题在 Ubuntu WebGPU 任务中未复现。
最快修复方案:暂无确认的一步修复方案。在 Issue 讨论中,针对 hy_v4 的修复做法是将 WebGPU 下的 HY_V4 arch 测试禁用(见讨论摘要提及的 #28855),但后续 macOS WebGPU CI 仍在 DeepSeek V4 相关测试中出现 SIGTRAP,因此该做法并非最终完整修复。
注意事项:Issue 已关闭,但讨论中后续崩溃转移到了 test-recurrent-state-rollback-dsv4 与 test-save-load-state(DeepSeek V4 相关,SIGTRAP)。讨论中还提到失败可能与 #28091(precompiled headers)引入的变更有关,并怀疑已由 #28882 解决,但这些因果关系在 Issue 中没有给出明确的技术验证,属于可能原因。请勿把“禁用 HY_V4 测试”当作对所有 macOS WebGPU 崩溃的通用解决方案。
问题场景
在 macOS ARM64(GitHub-hosted runner,Apple M1 Virtual,macOS 26.6.2)上,使用 WebGPU(Dawn)作为 GGML 后端构建 llama.cpp,并运行主测试套件(ctest -L main)。触发崩溃的具体场景是测试由 test-llama-archs 生成的合成 Hy4 MoE GGUF fixture(build/tests/test-models/hy_v4-moe.gguf)以及 test-save-load-state 对同一模型进行初始评估。表现为 hy_v4 架构执行阶段进程崩溃,而 hy_v3 在同一环境下的 WebGPU 测试正常通过。
报错原文
| hy_v3| WebGPU| MoE| OK (8.82e-08)| OK|
| hy_v3|Apple M1 (Virtual)| MoE| OK (0.00e+00)| OK|
| hy_v4| WebGPU| MoE|
Test #27: test-llama-archs ...........................***Exception: SegFault
Start 33: test-save-load-state
Test command: /Users/runner/work/llama.cpp/llama.cpp/build/bin/test-save-load-state --models /Users/runner/work/llama.cpp/llama.cpp/build/tests/test-models/
main: model /Users/runner/work/llama.cpp/llama.cpp/build/tests/test-models/hy_v4-moe.gguf
load: adding 128 dummy tokens
run_save_load_tests_for_model: no prompt provided, generating 100 (n_batch) random tokens
run_save_load_tests_for_model: the input prompt is 100 tokens
Test #33: test-save-load-state .......................Bus error***Exception
96% tests passed, 2 tests failed out of 54
The following tests FAILED:
27 - test-llama-archs (SEGFAULT)
33 - test-save-load-state (Bus error)
Errors while running CTest
Process completed with exit code 8
原因分析
根据 Issue 描述,首次失败出现在提交 49c0dc82b849344f945b14ab997386bd793369ae(model : add Tencent Hy 4 (hy_v4) preview architecture support (#28127)),该提交前的 WebGPU 运行通过。因此最可能的原因是 WebGPU(Dawn)后端对新增的 hy_v4 MoE 架构支持不完整,导致在 hy_v4 执行阶段触发 SIGSEGV 与 SIGBUS。由于 Ubuntu WebGPU 任务通过同一套测试,问题更像是 macOS + Dawn 组合下的特定缺陷,而非模型文件或测试本身的问题。
可能原因(证据不充分):讨论中进一步定位到 #28091(precompiled headers 相关改动)之后的提交开始失败,但作者本人也表示不理解该改动为何会影响 WebGPU 测试;另有参与者指出该问题可能已由 #28882 解决。这些都未在 Issue 中给出明确根因说明。
环境排查
- 确认 llama.cpp 版本与 commit:是否为 0.4.0-dev (build 10902, commit df03399b8),或已包含 hy_v4 支持的后续提交。
- 确认 GGML 后端配置:
GGML_WEBGPU=ON、GGML_METAL=OFF、GGML_BLAS=OFF是否与 CI 一致。 - 确认 WebGPU 实现与依赖:是否使用 Dawn,以及
CMAKE_PREFIX_PATH=dawn是否正确指向 Dawn 安装路径。 - 确认操作系统与硬件:macOS 版本(Issue 中为 macOS 26.6.2)、是否 Apple Silicon / M1 虚拟化环境、Runner image 版本。
- 确认测试套件范围:是否执行
ctest -L main,以及是否包含 hy_v4 与 DeepSeek V4 相关测试。 - 若已应用任何针对 hy_v4 的测试禁用补丁,确认该补丁基于哪个 commit,因为讨论显示失败点可能随 rebase 发生转移。
解决步骤
- 按 Issue 中给出的 CI 配置复现:先执行 workflow 的 Dawn Dependency 步骤,然后设置
export CMAKE_PREFIX_PATH=dawn。 - 使用与 Issue 相同的构建参数配置并构建:
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF,随后cmake --build build。 - 进入 build 目录运行
ctest -L main --verbose --timeout 900,确认失败测试编号与类型(test-llama-archs 为 SegFault,test-save-load-state 为 Bus error)。 - 若需要临时恢复 CI 通过,可优先尝试讨论中提到的做法:为 WebGPU 禁用 HY_V4 arch 测试(对应 #28855)。注意该做法只是绕过 hy_v4 崩溃,Discussion 摘要显示后续仍可能在 DeepSeek V4 相关测试(test-recurrent-state-rollback-dsv4、test-save-load-state,SIGTRAP)中失败。
- 检查是否已包含 #28882 中的修复;讨论中认为该 PR 可能解决了由 #28091 引入的问题,但未在 Issue 中给出确认性结论。
- 如果仍崩溃,按讨论中的 bisect 思路,在
1dfe94e04875bbab710c1fbcb092ae2901b16d1b(通过)与3bcfeb700fce9ff38a050dcd3f6a856319e948ba(失败)之间进一步缩小提交范围,注意该区间与 #28091 相关。
验证方法
在 macOS ARM64 + WebGPU 环境下重新运行 ctest -L main --verbose --timeout 900,确认 test-llama-archs 不再出现 SegFault、test-save-load-state 不再出现 Bus error,且 hy_v4 相关测试能够正常完成或被显式跳过(而不是终止进程)。若目标只是恢复 CI,则至少应确认失败列表为空、CTest 退出码为 0。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![Dify python code execution error: No usable temporary directory found in ['/tmp', '/var/tmp', '/usr/tmp', '/'] error: exit status 255](https://www.chat-gpts.plus/wp-content/uploads/2026/09/18678-8dcba7c2-768x403.jpg)