{"record":{"id":"0a8b4e60b4185651","repo":"sgl-project/sglang","slug":"ffprobe-failed-for-final-minimax-h3-output-suffix","errorCode":null,"errorMessage":"ffprobe failed for final MiniMax H3 output{suffix}","messagePattern":"ffprobe failed for final MiniMax H3 output(.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py","lineNumber":393,"sourceCode":"                str(path),\n            ],\n            check=True,\n            capture_output=True,\n            text=True,\n            timeout=30,\n        )\n    except subprocess.TimeoutExpired as exc:\n        raise RuntimeError(\n            \"MiniMax H3 final output ffprobe timed out after 30 seconds\"\n        ) from exc\n    except FileNotFoundError as exc:\n        raise RuntimeError(\n            \"ffprobe is required to validate final MiniMax H3 output\"\n        ) from exc\n    except subprocess.CalledProcessError as exc:\n        detail = (exc.stderr or \"\").strip()\n        suffix = f\": {detail}\" if detail else \"\"\n        raise RuntimeError(\n            f\"ffprobe failed for final MiniMax H3 output{suffix}\"\n        ) from exc\n\n    try:\n        payload = json.loads(probe.stdout)\n    except (TypeError, ValueError) as exc:\n        raise RuntimeError(\n            \"ffprobe returned invalid JSON for MiniMax H3 output\"\n        ) from exc\n    if not isinstance(payload, dict):\n        raise RuntimeError(\"ffprobe returned invalid JSON for MiniMax H3 output\")\n    streams = payload.get(\"streams\") or []\n    if not isinstance(streams, list):\n        raise RuntimeError(\"ffprobe returned invalid stream metadata\")\n    video_streams = [\n        stream\n        for stream in streams\n        if isinstance(stream, dict) and stream.get(\"codec_type\") == \"video\"","sourceCodeStart":375,"sourceCodeEnd":411,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py#L375-L411","documentation":"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.","triggerScenarios":"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.","commonSituations":"Disk exhaustion during generation; process killed mid-write; output_path accidentally pointing at a partial temp file.","solutions":["Inspect the appended stderr detail to identify the exact ffprobe complaint","Check disk space and rerun `ffprobe <file>` manually on the output","Retry the generation request; truncated muxes are usually transient","If persistent, investigate the decoding/muxing stage writing the MP4"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"import subprocess\nsubprocess.run([\"ffprobe\", \"-v\", \"error\", path], check=True, capture_output=True)  # pre-flight the file","typeGuard":null,"tryCatchPattern":"try:\n    fields = adapter.validate_final_outputs_sync(paths, batch)\nexcept RuntimeError as e:\n    if \"ffprobe failed\" in str(e):\n        log.error(\"corrupt output\", exc_info=e)\n        paths = regenerate(prompt)\n    else:\n        raise","preventionTips":["Monitor disk space where outputs are written","Pre-flight-probe generated files before feeding them to the adapter"],"tags":["minimax-h3","ffprobe","corrupt-output","validation"],"backgroundTag":"media-file-corrupt","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}