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
- Restore bun.lockb from version control
- Otherwise delete it and run `bun install`
- Prevent non-Bun tooling (filters, hooks, editors) from touching bun.lockb
Defensive patterns
Strategy: fallback
Prevention
- Treat bun.lockb as opaque binary; only Bun writes it
- Exclude it from git filters, hooks, and text-mode tooling
- Keep backups via version control so restoration is one command
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
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
Related errors
- picsum ${p.id}: ${res.status}
- not 200
- Expected ${receivedCount[0]} to equal ${sentCount}
- ${runtime} server exited before READY
- Mismatch
AI-assisted analysis of oven-sh/bun@8c5296ac45 (2026-08-16).
Data as JSON: /api/errors/af8949ce705724a6.
Report an issue: GitHub.