oven-sh/bun · error · Error

${runtime} client exited ${code}${code === null ? " (timed o

Error message

${runtime} client exited ${code}${code === null ? " (timed out)" : ""}

What it means

The offset tables in the lockfile's buffer section failed structural sanity checks: 0xDEADBEEF 'never written' sentinels, zero or backwards start offsets, start > end, end past EOF, or ranges not aligned/sized to the element type (src/install/lockfile/Buffers.rs:83-137).

Source

Thrown at bench/quic/run.mjs:62

  }
  throw new Error(`${runtime} server exited before READY`);
}

async function runClient(runtime, port) {
  const proc = spawn(bin(runtime), [...argv(runtime), `${here}client.mjs`], {
    env: { ...process.env, PORT: port, COUNT, CONCURRENCY },
    stdio: ["ignore", "pipe", "inherit"],
  });
  let out = "";
  proc.stdout.on("data", d => (out += d));
  // Bounded: a pairing that wedges (e.g. the peer tears the session down
  // mid-run) must report, not hang the whole matrix.
  const timer = setTimeout(() => proc.kill("SIGKILL"), Number(process.env.CLIENT_TIMEOUT_MS ?? 60000));
  const [code] = await once(proc, "exit");
  clearTimeout(timer);
  const line = out.trim().split("\n").at(-1);
  if (code !== 0 || !line?.startsWith("{")) {
    throw new Error(`${runtime} client exited ${code}${code === null ? " (timed out)" : ""}`);
  }
  return JSON.parse(line);
}

// Best of N rounds: QUIC throughput is noisy, and the fastest round is the one
// least perturbed by an unrelated scheduler hiccup.
async function measure(serverRuntime, clientRuntime) {
  const { proc, port } = await startServer(serverRuntime);
  try {
    let best = null;
    for (let i = 0; i < ROUNDS; i++) {
      let r;
      try {
        r = await runClient(clientRuntime, port);
      } catch (err) {
        return { failed: err.message };
      }
      if (!best || r.rps > best.rps) best = r;

View on GitHub (pinned to 8c5296ac45)

Solutions

  1. Restore bun.lockb from version control
  2. Otherwise delete it and run `bun install`
  3. Prevent non-Bun tooling (filters, hooks, editors) from touching bun.lockb
Defensive patterns

Strategy: fallback

Prevention

When it happens

Trigger: Any structural corruption of bun.lockb: bit rot, partial writes, binary merge conflicts, LFS smudge/clean filters altering bytes.

Common situations: Same as other corruption classes - the file on disk no longer matches what the writer serialized.

Understand the failure class

Related errors


AI-assisted analysis of oven-sh/bun@8c5296ac45 (2026-08-16). Data as JSON: /api/errors/af8949ce705724a6. Report an issue: GitHub.