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
- Build the LTX-2.5 branch base (and
main) on dgx and run test_minimax_h3 to establish how far back this goes.
- 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.
- 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
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):
minimax_h3: the WHOLE t2va path composes end to endthrowsvt cuda: cudaFree: invalid argumentminimax_h3: an NVFP4 checkpoint loads into a runnable DiTthen SIGSEGVsEach 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.cppwas 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, samecudaFree: invalid argument, same SIGSEGV, same38 | 36 passed | 2 failed | 41 skipped, same42724assertions. 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
mainon 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_h3is 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
main) on dgx and runtest_minimax_h3to establish how far back this goes.GPU work on that host must go through
flock $HOME/gpu.lock(other sessions share the box).🤖 Generated with Claude Code