Bug: qwen4exp graph builder aborts (ggml_abort) on DGX Spark (SM121) under sustained load
Model: Qwen3.8-Flash-Next UD-IQ4_XS (unsloth GGUF, 93.7G)
Hardware: DGX Spark (GB10, SM121, 128GB unified)
Build: PR #27742 branch, -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121 -DGGML_CUDA_FA=ON
Serve: llama-server -m <gguf> -ngl 99 --flash-attn on --ctx-size 32768
Symptom
The server aborts (SIGABRT) during sustained multi-request load — specifically during a tool-calling benchmark battery. It handles single/short requests fine (coherent output, tool calls, structured output, long prompts all work), but aborts deterministically at a specific scenario (~scenario 20 of the battery, reproduced 3×).
Backtrace (from the abort)
#0 __GI___wait4
#1 ggml_print_backtrace ()
#2 ggml_abort ()
#3 llama_model_qwen4exp::graph::graph(llama_model const&, llm_graph_params const&)
#4 llama_model_qwen4exp::build_arch_graph(llm_graph_params const&) const
#5 llama_model::build_graph(llm_graph_params const&) const
#6 llama_context::process_ubatch(...)
#7 llama_context::decode(llama_batch const&)
#8 llama_decode ()
#9 server_context_impl::decode(...)
Analysis
ggml_abort() is called from inside the qwen4exp graph constructor (llama_model_qwen4exp::graph::graph). This is a deterministic abort on a specific batch shape (a token count / batch size the benchmark sends), not a memory-pressure or OOM issue. The graph builder hits an unsupported path and hard-aborts.
Repro
Run a sustained multi-turn tool-calling benchmark against the server (e.g. tool-eval-bench). It aborts at a specific scenario, reproducibly. I could not isolate the exact shape with targeted single requests (tool calls, structured output, long prompts, multi-turn all work individually) — it only triggers under the benchmark's specific batch pattern.
Environment
Bug: qwen4exp graph builder aborts (ggml_abort) on DGX Spark (SM121) under sustained load
Model: Qwen3.8-Flash-Next UD-IQ4_XS (unsloth GGUF, 93.7G)
Hardware: DGX Spark (GB10, SM121, 128GB unified)
Build: PR #27742 branch,
-DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=121 -DGGML_CUDA_FA=ONServe:
llama-server -m <gguf> -ngl 99 --flash-attn on --ctx-size 32768Symptom
The server aborts (SIGABRT) during sustained multi-request load — specifically during a tool-calling benchmark battery. It handles single/short requests fine (coherent output, tool calls, structured output, long prompts all work), but aborts deterministically at a specific scenario (~scenario 20 of the battery, reproduced 3×).
Backtrace (from the abort)
Analysis
ggml_abort()is called from inside the qwen4exp graph constructor (llama_model_qwen4exp::graph::graph). This is a deterministic abort on a specific batch shape (a token count / batch size the benchmark sends), not a memory-pressure or OOM issue. The graph builder hits an unsupported path and hard-aborts.Repro
Run a sustained multi-turn tool-calling benchmark against the server (e.g. tool-eval-bench). It aborts at a specific scenario, reproducibly. I could not isolate the exact shape with targeted single requests (tool calls, structured output, long prompts, multi-turn all work individually) — it only triggers under the benchmark's specific batch pattern.
Environment
-ngl 99 --flash-attn on --ctx-size 32768