开源llama.cpp Releases·原文 2026年9月23日本站收录 2026年9月24日

llama.cpp b11120修复Vulkan后端重复dlopen导致的崩溃

llama.cpp发布b11120,将Vulkan后端内部符号重新设为隐藏可见性,只导出GGML_BACKEND_API,修复由 #28732 引入、在ggml_backend_load_all() 重复加载时触发的vk_instance析构崩溃(#29138)。

AI解读:这条更新修的是一个很具体的加载顺序bug:自从 #28732 之后,Vulkan后端的内部符号被导出,ggml_backend_load_all() 再dlopen一份副本时,这些符号会被插到前面,于是副本的析构函数把还在使用的vk_instance销毁掉,后续设备查询就撞上vk_instance.device_indices的GGML_ASSERT。

b11120的做法是把可见性改回隐藏,只导出GGML_BACKEND_API,也就是回到 #28732 之前的状态,对应修复 #29138。对使用Vulkan后端、且会多次加载后端的用户来说,这解决的是运行时崩溃而不是新功能;如果你没触发重复加载路径,日常使用大概率感受不到变化。

发行页同时列出各平台预编译包,覆盖macOS/iOS、Linux、Android、Windows以及openEuler,其中KleidiAI的macOS arm64构建和openEuler构建标注为DISABLED。需要这些二进制的用户可以直接取包,不必自行编译。

llama.cpp发布b11120版本,提交信息显示该版本修复了Vulkan后端的一个崩溃问题。

问题起因是 #28732 之后内部符号被导出:ggml_backend_load_all() 再次dlopen一份副本并dlclose时,这些符号被副本插入(interpose),副本的析构函数因此销毁了仍在使用的vk_instance,之后的设备查询会命中vk_instance.device_indices上的GGML_ASSERT。

修复方式是把内部符号改回隐藏可见性,只导出GGML_BACKEND_API,与 #28732 之前一致,对应修复 #29138。提交信息署名Assisted-by: henk:claude-fable-5。

该发布照例附带多平台预编译产物。macOS/iOS提供Apple Silicon(arm64)与Intel(x64)包以及iOS XCFramework;其中macOS Apple Silicon(arm64,启用KleidiAI)标注为DISABLED。

Linux提供Ubuntu x64/arm64/s390x(CPU)、Vulkan、CUDA 12.8与CUDA 13.4(含arm64)、ROCm 10.0、OpenVINO 2026.4、SYCL FP32/FP16,以及Snapdragon(CPU、Adreno GPU、Hexagon NPU)包。

Android提供arm64(CPU)与arm64 Snapdragon(CPU、Adreno GPU、Hexagon NPU)包;Windows提供x64/arm64(CPU)、arm64 OpenCL Adreno、CUDA 12.4/13.4、Vulkan、OpenVINO 2026.4、SYCL、ROCm 10.0包;openEuler相关产物标注为DISABLED;另有UI包。

信息来源

llama.cpp Releases原始来源