llama.cpp は、公開バージョンのタグ b11871 において PR #30242 をマージし、JSON リクエストのネスト深度に対する積極的な保護メカニズムを正式に導入しました。これは、再帰的に解析する前にネストレベルを事前検査し、128 層を超えた場合は処理を拒否して HTTP 400 Bad Request を返すものです。この対策は、悪意のあるまたは異常な深さのネストを持つ JSON(たとえば非常に長いツールスキーマなど)によってスタックオーバーフローが発生するのを防ぐためのもので、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 に由来しており、リリース情報は元のタグページを基準としています。