{"record":{"id":"bc436a6c348aa2e1","repo":"sgl-project/sglang","slug":"minimax-h3-audio-decode-produced-no-output-payload","errorCode":null,"errorMessage":"MiniMax H3 audio decode produced no output payload","messagePattern":"MiniMax H3 audio decode produced no output payload","errorType":"error_code","errorClass":"RuntimeError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/decoding.py","lineNumber":452,"sourceCode":"        audio_payload = None\n        if is_audio_owner:\n            try:\n                audio_payload = self._decode_audio(audio_latent, server_args)\n            except Exception as exc:\n                owner_exception = exc\n                owner_error = f\"{type(exc).__name__}: {exc}\"\n        if replica_group is not None:\n            owner_error = replica_group.broadcast_object(owner_error, src=0)\n        if owner_error is not None:\n            if owner_exception is not None:\n                raise owner_exception\n            raise RuntimeError(\n                f\"MiniMax H3 audio decode failed on rank 0: {owner_error}\"\n            )\n        if replica_group is not None:\n            audio_payload = replica_group.broadcast_tensor_dict(audio_payload, src=0)\n        if not isinstance(audio_payload, dict):\n            raise RuntimeError(\"MiniMax H3 audio decode produced no output payload\")\n        audio_waveform = _required_tensor(\n            audio_payload.get(\"waveform\"), \"audio_vae.decode\"\n        )\n        audio_sample_rate = int(audio_payload[\"sample_rate\"])\n\n        visual_frames = server_args.pipeline_config.post_decoding(\n            visual_frames, server_args\n        )\n        output_audio_waveform = _canonical_output_audio_waveform(\n            audio_waveform, batch_size=int(visual_frames.shape[0])\n        )\n        return OutputBatch(\n            output=visual_frames,\n            audio=output_audio_waveform,\n            audio_sample_rate=audio_sample_rate,\n            trajectory_timesteps=batch.trajectory_timesteps,\n            trajectory_latents=batch.trajectory_latents,\n            rollout_trajectory_data=batch.rollout_trajectory_data,","sourceCodeStart":434,"sourceCodeEnd":470,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/decoding.py#L434-L470","documentation":"After the audio decode and (optional) replica broadcast of the audio payload, the payload must be a dict containing the decoded waveform and sample_rate. A non-dict payload (e.g. None or a tensor) raises this RuntimeError.","triggerScenarios":"The audio VAE decode returning None, a bare tensor, or the tensor-dict broadcast producing a non-mapping on non-rank-0 replicas.","commonSituations":"Custom audio VAE implementations that don't return the expected {'waveform':..., 'sample_rate':...} dict; broadcast desynchronization between replicas.","solutions":["Ensure the audio decoder returns a dict with 'waveform' and 'sample_rate'","Verify replica_group ranks stay in sync (same broadcast calls on all ranks)","Wrap/normalize the decoder output into the expected payload shape"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# in custom audio decoders\nreturn {\"waveform\": waveform, \"sample_rate\": int(sr)}","typeGuard":"def valid_audio_payload(p) -> bool:\n    return isinstance(p, dict) and \"waveform\" in p and \"sample_rate\" in p","tryCatchPattern":null,"preventionTips":["Return dict payloads from custom VAE decoders","Keep broadcast calls symmetric across replica ranks"],"tags":["minimax-h3","audio-decode","payload-format"],"backgroundTag":"unexpected-response-format","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}