The ne[j] >= 0 line is the best part of this writeup. It's correct, it passed review, and it's still the reason the crash below it went unquestioned for as long as it did. I run into the same shape reviewing agent output before it gets applied to anything real - a schema-valid check that reads as "this is safe" when the code underneath assumed something narrower than schema-valid ever guaranteed. Collapsing the per-dimension checks into ggml_nelements(info.t) > 0 is the same move as replacing three guard clauses with the one statement that actually says what the invariant was. The diffusion zero-tensor correction is the part I'd have gotten wrong too - rejecting zero outright is the obvious fix and it's the wrong one.
Ahmet Özel
AI Engineer. Computer Vision, RAG and LLM agents.
"The loader is the trust boundary" belongs on the first page of every model-hosting guide. People apply real scrutiny to pickle files because that lesson was learned loudly, then download a .gguf with the mental model of a JPEG, while the parser turning it into heap allocations and tensor shapes is C++ reading attacker-controlled counts.
A zero dimension killing llama.cpp on a division is close to the friendly version of this bug. The same class quietly hands you an allocation size someone else chose.
The practical takeaway for anyone running a model server: neither the hub nor the file extension is a trust boundary, so validate shapes before the loader gets to, and treat model fetching with the same care as any other untrusted download.