Summary
trellis-server segfaults in libggml-base.so at stage [5/7] FlexiDualGrid shape decode on the Vulkan backend with the NVIDIA proprietary driver. Reproduced twice on the same host with the same input. The identical stage completes normally on the CPU backend on that host, so this looks specific to the Vulkan path rather than to the input or the model weights.
VRAM is not the constraint: the device reports 8438 MB and peak usage during the run was ~1.8 GB.
Environment
- GPU: NVIDIA T1000 8GB, driver 550.163.01, Vulkan API 1.3.277
- OS: Debian-based, kernel 6.12.95
- Build:
-DGGML_VULKAN=ON -DGGML_OPENMP=ON, no CUDA backend
- Models: TRELLIS.2 GGUF set, 1024 cascade
Repro
trellis-server --models <dir> --host 127.0.0.1 --port 8080 --gpu 1 --seed 42 --require-gpu
curl -f -X POST -F image=@input.png http://127.0.0.1:8080/generate -o out.glb
Input is a single centered object on a plain background, 1024x1024 PNG.
What happens
Stages 1-4 complete normally, including the full sparse-structure flow (12 steps, 20 forwards, ~503s). The crash lands immediately after the HR SLAT stats line:
[flow] 12 steps, 20 forwards, 502.5s
[stats] HR slat n=178688 mean=-0.0505 std=5.5947 min=-24.335 max=28.489 nan/inf=0
[5/7] FlexiDualGrid shape decode -> mesh @res1024
[trellis] using Vulkan1 (8438 MB)
Then nothing further is logged, the HTTP connection closes (curl: (52) empty reply), and the kernel logs:
trellis-server[585614]: segfault at 0 ip 00007fd0fbdb6598 sp 00007fd0f6ffad08 error 4 in libggml-base.so.0.15.1[1f598,7fd0fbdad000+8e000]
trellis-server[634397]: segfault at 0 ip 00007f2ae5acd598 sp 00007f2ae... error 4 in libggml-base.so.0.15.1
segfault at 0 with error 4 is a null-pointer read. Both runs crashed at the same stage with the same signature; wall time to crash was 947s and 932s.
Note the stats line reports nan/inf=0, so the tensor feeding the decode looks finite.
Contrast: the CPU backend gets through it
Same host, same image, same seed, --gpu -1: the pipeline completes all seven stages including [5/7] FlexiDualGrid shape decode and writes a valid textured GLB (8962s end to end). So the decode stage itself works on this input; only the Vulkan path faults.
Other data points from the same host
- Intel UHD 630 (Mesa, UMA) as the selected device: the run dies earlier, at
[3/6], with vk::Device::waitForFences: ErrorDeviceLost and a kernel-level i915 GPU HANG. Different failure, likely unrelated, mentioned only in case the two share a root cause in Vulkan resource handling.
- GTX 1650 4GB via NVK: fails at stage 1 with
Requested buffer size exceeds device buffer size limit on a 2.4 GB allocation for BiRefNet. That one is a genuine device limit, not a bug.
Happy to run a debug build with symbols, capture a backtrace, or test a patch — the repro is deterministic here.
Summary
trellis-serversegfaults inlibggml-base.soat stage[5/7] FlexiDualGrid shape decodeon the Vulkan backend with the NVIDIA proprietary driver. Reproduced twice on the same host with the same input. The identical stage completes normally on the CPU backend on that host, so this looks specific to the Vulkan path rather than to the input or the model weights.VRAM is not the constraint: the device reports 8438 MB and peak usage during the run was ~1.8 GB.
Environment
-DGGML_VULKAN=ON -DGGML_OPENMP=ON, no CUDA backendRepro
Input is a single centered object on a plain background, 1024x1024 PNG.
What happens
Stages 1-4 complete normally, including the full sparse-structure flow (12 steps, 20 forwards, ~503s). The crash lands immediately after the HR SLAT stats line:
Then nothing further is logged, the HTTP connection closes (
curl: (52) empty reply), and the kernel logs:segfault at 0witherror 4is a null-pointer read. Both runs crashed at the same stage with the same signature; wall time to crash was 947s and 932s.Note the stats line reports
nan/inf=0, so the tensor feeding the decode looks finite.Contrast: the CPU backend gets through it
Same host, same image, same seed,
--gpu -1: the pipeline completes all seven stages including[5/7] FlexiDualGrid shape decodeand writes a valid textured GLB (8962s end to end). So the decode stage itself works on this input; only the Vulkan path faults.Other data points from the same host
[3/6], withvk::Device::waitForFences: ErrorDeviceLostand a kernel-leveli915 GPU HANG. Different failure, likely unrelated, mentioned only in case the two share a root cause in Vulkan resource handling.Requested buffer size exceeds device buffer size limiton a 2.4 GB allocation for BiRefNet. That one is a genuine device limit, not a bug.Happy to run a debug build with symbols, capture a backtrace, or test a patch — the repro is deterministic here.