llama.cpp b10924修复路由子进程状态命令被日志污染的问题
llama.cpp发布b10924构建,修复子进程状态命令与日志共用管道时因颜色重置转义序列导致命令被当作日志转发、已完成下载卡在downloading状态的问题。
AI解读:llama.cpp的b10924版本修了一个不容易复现但影响明显的bug:服务端路由(router)读取子进程状态命令时,命令可能被日志内容顶偏,导致已经下载完的模型一直卡在downloading状态。
问题出在两个进程共用一条管道:子进程在stdout写状态命令,日志器在stderr写日志。日志器在debug、warn或error条目换行之后又会补一个颜色重置转义序列,而它自己不带换行,于是这个转义序列就贴在下一条命令前面。路由器的行前缀检查因此失败,把命令当成普通日志转发,状态自然没有更新。
修复方式是写命令时在前面加一个换行,先把前面未结束的日志行收尾,让命令总是从行首开始。对使用llama.cpp服务端做模型下载的用户来说,这个改动直接影响下载完成后能否正常进入可用状态;其余构建内容与常规发布一致。
llama.cpp发布b10924构建,未包含新模型或性能改动,主要修复服务端路由(router)子进程状态命令被日志输出顶偏的问题。
修复前,子进程在stdout写状态命令、日志器在stderr写日志,两者共用一条管道;日志器在debug、warn或error条目的换行之后还会输出颜色重置转义序列,该序列自身不带换行,于是被路由器读到并粘连在下一条命令前面。行前缀检查因此失败,命令被当作日志行转发而不是被处理,造成一个已完成的下载一直停留在downloading状态。
修复方法是在写命令时加一个前导换行,先闭合尚未结束的那一行,使命令始终从行边界开始。该改动由b10924发布说明中的提交信息说明,对应PR #28747。
b10924同时提供各平台预编译包:macOS Apple Silicon(arm64)、macOS Intel(x64)、iOS XCFramework;Linux的Ubuntu x64/arm64/s390x CPU,以及Vulkan、ROCm 10.0、OpenVINO 2026.3.1、SYCL FP32/FP16变体;Android arm64 CPU;Windows的x64/arm64 CPU,以及OpenCL Adreno、CUDA 12.4、CUDA 13.3、CUDA 13.4(arm64)、Vulkan、OpenVINO 2026.3.1、SYCL、ROCm 10.0版本,另附各CUDA运行时DLL包。
发布说明还列出两项被禁用的构建:启用KleidiAI的macOS Apple Silicon(arm64)指向PR #23780,openEuler构建指向PR #23705。此外还提供单独的UI包。