earendil-works/pi · error · Error
Unix listener path changed during cleanup; preserved replace
Error message
Unix listener path changed during cleanup; preserved replacement at ${preserved} What it means
Error "Unix listener path changed during cleanup; preserved replacement at ${preserved}" thrown in earendil-works/pi.
Source
Thrown at packages/server/src/transports/unix/listener.ts:191
const preserved = join(dirname(this.path), `.c-${randomUUID().slice(0, 6)}`);
try {
await rename(this.path, preserved);
} catch (error) {
if (isErrorCode(error, "ENOENT")) return;
throw error;
}
const moved = await lstat(preserved);
if (moved.isSocket() && moved.dev === identity.dev && moved.ino === identity.ino) {
await removePath(preserved);
return;
}
try {
await lstat(this.path);
} catch (error) {
if (isErrorCode(error, "ENOENT")) await rename(preserved, this.path);
else throw error;
}
throw new Error(`Unix listener path changed during cleanup; preserved replacement at ${preserved}`);
}
private reportError(error: unknown): void {
try {
this.options.onError?.(error instanceof Error ? error : new Error(String(error)));
} catch {
// Error observers cannot affect listener state.
}
}
}
/** @internal Exported only for transport-level verification. */
export class UnixByteConnection implements ByteConnection {
private readonly socket: Socket;
private readonly gracefulCloseTimeoutMs: number;
private readonly maxPendingBytes: number;
private pendingBytes = 0;
private closedValue = false;View on GitHub (pinned to 4af9d21d3b)
Solutions
- Another process replaced the socket during cleanup; investigate concurrent listeners on the same path.
When it happens
Trigger: Thrown at packages/server/src/transports/unix/listener.ts:191 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/9bb560dc11051bd3.
Report an issue: GitHub.