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
- Check the producer side for truncation (log len(base64_data))
- 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
- Treat empty image fields as absent upstream
- Assert len(payload) > 0 before building requests
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
- (missing ;base64 marker)
- Failed to decode base64 image. Expected format…
- auxiliary PP output must contain at least one tensor
- data URI must use ;base64 encoding
- material URI base64 payload is empty
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)