sgl-project/sglang · error · Error

Unsupported msgpack byte ${b}

Error message

Unsupported msgpack byte ${b}

What it means

RadixTree::loading_onboard in tree_v2 is a stub: it returns an empty result when the tree is disabled, but otherwise throws 'Not implemented yet'. The load-and-onboard path (pulling KV from the host tier back onto device) is not yet written for this tree version.

Source

Thrown at python/sglang/multimodal_gen/apps/realtime_webui/app.js:2030

      return value;
    }
    if (b === 0xc4) return readBin(buf[i++]);
    if (b === 0xc5) return readBin((buf[i++] << 8) | buf[i++]);
    if (b === 0xc6) {
      return readBin(
        (buf[i++] * 16777216) + (buf[i++] << 16) + (buf[i++] << 8) + buf[i++],
      );
    }
    if (b === 0xdc) return Array.from({ length: (buf[i++] << 8) | buf[i++] }, read);
    if (b === 0xdd) {
      return Array.from({
        length: (buf[i++] * 16777216) + (buf[i++] << 16) + (buf[i++] << 8) + buf[i++],
      }, read);
    }
    if (b === 0xd9) return readStr(buf[i++]);
    if (b === 0xda) return readStr((buf[i++] << 8) | buf[i++]);
    if (b === 0xde) return readMap((buf[i++] << 8) | buf[i++]);
    throw new Error(`Unsupported msgpack byte ${b}`);
  };
  const readStr = (n) => text.decode(buf.slice(i, i += n));
  const readBin = (n) => buf.subarray(i, i += n);
  const readMap = (n) => {
    const obj = {};
    for (let j = 0; j < n; j++) obj[read()] = read();
    return obj;
  };
  return read();
}

renderPresets();
drawIdle();
setPreviewScale(DEFAULT_PREVIEW_SCALE);
updateSuperResolutionControls();
applyQueryParams()
  .then(async (query) => {
    if (!query.preset) await applyPreset(presets[0], { sendRuntimeEvents: false });

View on GitHub (pinned to 0132848349)

Solutions

  1. Disable hierarchical caching when using tree_v2
  2. Switch back to the v1 cpp radix tree or the default radix cache implementation for hicache workloads
  3. Wait for/upgrade to a version where tree_v2 loading_onboard is implemented
Defensive patterns

Strategy: fallback

Validate before calling

if use_hicache:
    assert tree_backend != "tree_v2", "tree_v2 loading_onboard is not implemented with hicache"

Try / catch

try:
    tree.loading_onboard(handle, kv)
except RuntimeError as e:
    if "Not implemented yet" in str(e):
        # degrade to device-only cache hit/miss
        pass
    else:
        raise

Prevention

When it happens

Trigger: Running tree_v2 with hierarchical caching enabled and triggering an onboard/load of cached KV from host memory into GPU — e.g. a request hitting a prefix resident in the host tier while use_hicache is on.

Common situations: Enabling HiCache with the experimental tree_v2 backend and serving requests whose prefixes were previously offloaded; scheduled retrieval/offload paths that call loading_onboard during scheduling.

Related errors


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