
Compile bug: SIGILL running `llama-cli` on RISCV SiFive P550
快速结论:该报错通常发生在 RISCV 平台(如 SiFive P550)上编译并运行 llama-cli 时,由于 CPU 缺少某些扩展(如 Zfh、Zvbb 等)但编译时未正确禁用对应 GGML 选项,导致执行到半精度浮点转换函数时触发非法指令 (SIGILL)。优先排查方式是检查编译命令中的 -DGGML_RV_* 系列选项是否与目标 CPU 的 ISA 扩展完全匹配。
问题场景
用户在 SiFive Premier P550 机器(RISCV64 架构)上编译 llama.cpp(提交 6b80c74f2853),编译成功后执行 llama-cli --version 立即崩溃,表现为 SIGILL。编译时使用了 -DGGML_VULKAN=1 -DGGML_ZFH=0 -DGGML_ZFHMIN=0 -DCMAKE_BUILD_TYPE=Debug。
报错原文
Thread 1 "llama-cli" received signal SIGILL, Illegal instruction.
0x00007ffff26231bc in riscv_compute_fp32_to_fp16 (f=0) at /home/ubuntu/dev/llama.cpp/ggml/src/ggml-cpu/simd-mappings.h:104
104 _Float16 hf = (_Float16)f;
原因分析
根本原因是编译时缺少对 RISCV 扩展宏的正确禁用。用户 CPU SiFive P550 的 ISA 为 rv64imafdch_zicsr_zifencei_zba_zbb_sscofpmf,不包含 Zfh(半精度浮点)扩展。但 Issue 作者最初只设置了 -DGGML_ZFH=0 -DGGML_ZFHMIN=0,却没有设置 -DGGML_RV_ZFH=0 和 -DGGML_RV_ZFHMIN=0(注意前缀 _RV_),导致编译时仍生成了使用 _Float16 指令的代码,运行时触发 SIGILL。
环境排查
- 确认操作系统:Linux (Ubuntu)
- 确认内核版本:6.6.77-2-premier
- 确认编译器:gcc 14.2.0
- 确认 CPU / ISA 扩展:检查
/proc/cpuinfo中isa行,尤其关注是否含有Zfh、Zvbb、Zihintpause、Zicbop等扩展 - 确认编译命令中是否同时设置了
-DGGML_RV_*系列选项(而非仅-DGGML_Z*)
解决步骤
- 根据目标 CPU 的 ISA 扩展清单,在 CMake 中显式禁用所有该 CPU 不支持的
GGML_RV_*选项。以 SiFive P550(ISA 不含 Zfh、Zvbb、Zihintpause、Zicbop)为例,可优先尝试以下编译命令(已验证有效):cmake -B build -DGGML_VULKAN=1 \ -DGGML_RVV=0 \ -DGGML_RV_ZIHINTPAUSE=0 \ -DGGML_RV_ZICBOP=0 \ -DGGML_RV_ZVFH=0 \ -DGGML_RV_ZFH=0 \ -DGGML_RV_ZFHMIN=0 \ -DCMAKE_BUILD_TYPE=Release cmake --build build --config Release - 如果仍有其他 SIGILL,进一步检查
/proc/cpuinfo的isa字段,排查是否缺少V(向量扩展)或Zvbb等,并对应增加-DGGML_RV_*禁用选项。 - 建议设置
-DCMAKE_BUILD_TYPE=Release(原 Issue 作者在 Debug 下触发,Release 下效果可能更稳定)。
验证方法
重新编译后运行 ./build/bin/llama-cli --version(或 llama-cli -h),若不报 SIGILL 并能正常输出版本/帮助信息,则问题解决。也可以运行一个极简模型推理测试(如 llama-cli -m tiny_model.gguf -p "hello")进一步验证。

![[Feature]: MCP OAuth token endpoint should not fabricate expires_in when upstream omits it](https://www.chat-gpts.plus/wp-content/uploads/2026/06/30298-96794208-768x403.jpg)
![[Bug]: No Retry-After header on RouterRateLimitError (all deployments in cooldown)](https://www.chat-gpts.plus/wp-content/uploads/2026/06/27823-2aadfc13-768x403.jpg)
