sgl-project/sglang · error · ValueError

(empty data payload)

Error message

{b64_format_hint} (empty data payload)

What it means

Raised when a base64 data URL parses successfully but contains an empty payload, i.e. there are no image bytes after the header.

Solutions

  1. Check the producer side for truncation (log len(base64_data))
  2. Treat empty payloads as missing images upstream instead of forwarding them

Example fix

// before
save_base64_image_to_path("data:image/png;base64,", "/tmp/img")
// after
if payload:
    save_base64_image_to_path(f"data:image/png;base64,{payload}", "/tmp/img")
Defensive patterns

Strategy: validation

Validate before calling

def has_payload(uri: str) -> bool:
    return uri.rsplit(",", 1)[-1].strip() != ""

Try / catch

try:
    save_base64_image_to_path(uri, path)
except ValueError as e:
    if "empty data payload" in str(e):
        skip_image()  # treat as missing

Prevention

When it happens

Trigger: Passing data:image/png;base64, (nothing after the comma) via _maybe_url_image or prepare_warmup_image_path.

Common situations: Template placeholders, upstream truncation of the base64 string, string slicing bugs that drop the payload, empty image fields in request payloads treated as set.

Related errors


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

Appendix: source

Thrown at python/sglang/multimodal_gen/runtime/utils/image_io.py:22

import re


def save_base64_image_to_path(base64_data: str, target_path: str) -> str:
    b64_format_hint = (
        "Failed to decode base64 image. "
        "Expected format: `data:[<media-type>];base64,<data>`"
    )

    match = re.match(r"data:(.*?)(;base64)?,(.*)", base64_data)
    if not match:
        raise ValueError(b64_format_hint)
    media_type = match.group(1)
    is_base64 = match.group(2)
    if not is_base64:
        raise ValueError(f"{b64_format_hint} (missing ;base64 marker)")
    data = match.group(3)
    if not data:
        raise ValueError(f"{b64_format_hint} (empty data payload)")

    if media_type.startswith("image/"):
        ext = media_type.split("/")[-1].lower()
        if ext == "jpeg":
            ext = "jpg"
    else:
        ext = "jpg"
    target_path = f"{target_path}.{ext}"
    os.makedirs(os.path.dirname(target_path), exist_ok=True)

    try:
        image_data = base64.b64decode(data)
    except Exception as exc:
        raise Exception(f"Failed to decode base64 image: {str(exc)}") from exc

    with open(target_path, "wb") as f:
        f.write(image_data)

View on GitHub (pinned to 0132848349)