llama.cpp 项目发布了版本 b10955,其中包含对 ggml-cpu 后端中堆损坏问题的关键修复。该更新禁用了预编译头文件(PCH)并移除了歧义的 CACHE_LINE_SIZE 定义,以解决内存安全问题。
- 禁用 ggml-cpu PCH 恢复了自然的包含顺序,确保 ops.h 在硬件干扰头文件之前被处理。
- 移除 std::hardware_destructive_interference_size 分支使 CACHE_LINE_SIZE 确定且独立于包含顺序。
- 该修复解决了 C++ 内核使用 256 字节缓存行而 C 代码使用 64 字节回退机制之间的不匹配问题,此前这导致 rope 工作缓冲区大小不足。
- 此修正防止了因缓冲区大小差异而在 ggml_compute_forward_rope_flt 中引发的堆缓冲区溢出崩溃。
该版本为 macOS(Apple Silicon 和 Intel)、Linux(x64、arm64、s390x)、Windows(CPU、CUDA、Vulkan、ROCm、OpenVINO、SYCL)、Android 和 openEuler 平台提供了二进制文件。