llama.cpp 于公开版本标签 b11871 中合并 PR #30242,正式引入对 JSON 请求嵌套深度的主动防护机制:在递归解析前预检嵌套层级,一旦超过 128 层即拒绝处理并返回 HTTP 400 Bad Request。此举旨在防止因恶意或异常深度嵌套 JSON(如超长工具 schema)引发栈溢出——在 macOS 上数百层即可触发 SIGBUS,在 Linux 上约万层可致 SIGSEGV,最终导致 llama-server 进程崩溃。
该限制覆盖多个关键路径:chat 接口中的 tools 定义、tool-call 参数、chat_template_kwargs 及 json_schema 字段;/completion 接口的 json_schema 参数;以及整个 /v1/systemone 请求体。值得注意的是,对于 Gemma-4 模型生成的过深 tool result,系统将退化为纯文本输出,不参与深度解析。项目强调此为‘根因修复’(fix the root, not the call side),而非仅在调用端做防御。
b11871 版本同步提供全平台二进制分发包,包括 macOS(Apple Silicon / Intel)、iOS、Linux(Ubuntu 多架构及 Vulkan/CUDA/ROCm/OpenVINO/SYCL/Snapdragon 后端)、Android(arm64 及 Snapdragon)、Windows(x64/arm64,支持 CUDA 12.4/13.4、Vulkan、OpenCL、OpenVINO、SYCL、ROCm 10.0)等;openEuler 构建当前标记为 DISABLED。所有变更均源自 GitHub 仓库 ggml-org/llama.cpp,发布信息以原始 tag 页面为准。