sgl-project/sglang · error · RuntimeError

ffprobe failed for final MiniMax H3 output{suffix}

Error message

ffprobe failed for final MiniMax H3 output{suffix}

What it means

ffprobe was found and ran but exited non-zero while probing the final MiniMax H3 output (subprocess.CalledProcessError). The stderr detail is appended to the message. Usually means the output file is corrupt, truncated, or not valid media — not an environment problem.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py:393

                str(path),
            ],
            check=True,
            capture_output=True,
            text=True,
            timeout=30,
        )
    except subprocess.TimeoutExpired as exc:
        raise RuntimeError(
            "MiniMax H3 final output ffprobe timed out after 30 seconds"
        ) from exc
    except FileNotFoundError as exc:
        raise RuntimeError(
            "ffprobe is required to validate final MiniMax H3 output"
        ) from exc
    except subprocess.CalledProcessError as exc:
        detail = (exc.stderr or "").strip()
        suffix = f": {detail}" if detail else ""
        raise RuntimeError(
            f"ffprobe failed for final MiniMax H3 output{suffix}"
        ) from exc

    try:
        payload = json.loads(probe.stdout)
    except (TypeError, ValueError) as exc:
        raise RuntimeError(
            "ffprobe returned invalid JSON for MiniMax H3 output"
        ) from exc
    if not isinstance(payload, dict):
        raise RuntimeError("ffprobe returned invalid JSON for MiniMax H3 output")
    streams = payload.get("streams") or []
    if not isinstance(streams, list):
        raise RuntimeError("ffprobe returned invalid stream metadata")
    video_streams = [
        stream
        for stream in streams
        if isinstance(stream, dict) and stream.get("codec_type") == "video"

View on GitHub (pinned to 0132848349)

Solutions

  1. Inspect the appended stderr detail to identify the exact ffprobe complaint
  2. Check disk space and rerun `ffprobe <file>` manually on the output
  3. Retry the generation request; truncated muxes are usually transient
  4. If persistent, investigate the decoding/muxing stage writing the MP4
Defensive patterns

Strategy: try-catch

Validate before calling

import subprocess
subprocess.run(["ffprobe", "-v", "error", path], check=True, capture_output=True)  # pre-flight the file

Try / catch

try:
    fields = adapter.validate_final_outputs_sync(paths, batch)
except RuntimeError as e:
    if "ffprobe failed" in str(e):
        log.error("corrupt output", exc_info=e)
        paths = regenerate(prompt)
    else:
        raise

Prevention

When it happens

Trigger: Generation wrote an incomplete/corrupt MP4 (crash mid-mux, disk full), or the output_path points to a non-media file; ffprobe exits with an error and its stderr is surfaced.

Common situations: Disk exhaustion during generation; process killed mid-write; output_path accidentally pointing at a partial temp file.

Related errors


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/0a8b4e60b4185651. Report an issue: GitHub.