Skip to content

test_minimax_h3 is RED on dgx (GB10): cudaFree invalid argument + SIGSEGV when two CUDA cases run in one process #486

Description

@localai-bot

Found during LTX-2.5 phase L7 (#435) while running the mandated baselines on dgx.casa. Proven not to be L7's change, but it is a real red gate on a shipped model that the recorded baseline does not match.

Symptom

On dgx (GB10, CUDA build):

[doctest] test cases:  38 |  36 passed | 2 failed | 41 skipped
[doctest] assertions: 42724
[doctest] Status: FAILURE!
  • minimax_h3: the WHOLE t2va path composes end to end throws vt cuda: cudaFree: invalid argument
  • minimax_h3: an NVFP4 checkpoint loads into a runnable DiT then SIGSEGVs

Each case passes ALONE (873 and 585 assertions, Status: SUCCESS!). Running just those two together crashes the second. So it is cross-test CUDA state inside one process, not a defect in either case.

Why it is not the LTX-2.5 work

An A/B in the same tree: src/vllm/multimodal/ltx2_video.cpp was removed from the library — the only mechanism the LTX change has to reach H3 is its static registrar — then relinked and re-run under the GPU lock. Identical failure: same two cases, same cudaFree: invalid argument, same SIGSEGV, same 38 | 36 passed | 2 failed | 41 skipped, same 42724 assertions. Tree restored byte-for-byte afterwards, md5 verified.

The part that is NOT yet established

The A/B rules out L7. It does not establish that the failure predates the whole LTX-2.5 campaign — nobody has built the branch base or current main on dgx and run this suite. That is the next step, and this issue should not be closed as "pre-existing" until someone does it. Flagged rather than assumed.

Why it matters beyond one suite

test_minimax_h3 is the gate for a shipped model, and its recorded baseline is 79 cases / 57395 assertions. On a CPU box that number reproduces exactly. On dgx the same suite reports 38 cases / 42724 assertions with 41 skipped and two hard failures — so the pinned baseline is a CPU-box number, and the CUDA arm of that gate has been running differently without anyone recording it.

Note the assertion count drops (57395 → 42724) precisely because cases throw and skip. That is the documented doctest trap: a count alone reads like a smaller run rather than a failure. Status: is the signal.

Wants

  1. Build the LTX-2.5 branch base (and main) on dgx and run test_minimax_h3 to establish how far back this goes.
  2. Diagnose the cross-test CUDA state — a context or allocator torn down by one case and reused by the next is the obvious hypothesis, unverified.
  3. Decide what the H3 gate's CUDA baseline actually is, and record it, so "79/57395" stops implying a number that only holds on CPU.

GPU work on that host must go through flock $HOME/gpu.lock (other sessions share the box).

🤖 Generated with Claude Code

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