Skip to content

Segfault in libggml-base at [5/7] FlexiDualGrid shape decode on Vulkan (NVIDIA proprietary); CPU backend completes the same stage #37

Description

@3DJ77

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions