earendil-works/pi · error · Error

Unix listener path is not a socket after binding: ${ownedBin

Error message

Unix listener path is not a socket after binding: ${ownedBindPath}

What it means

Error "Unix listener path is not a socket after binding: ${ownedBindPath}" thrown in earendil-works/pi.

Source

Thrown at packages/server/src/transports/unix/listener.ts:89

		const server = createServer((socket) => this.acceptSocket(socket));
		server.on("error", (error) => this.reportError(error));
		this.server = server;
		try {
			await new Promise<void>((resolve, reject) => {
				const onError = (error: Error): void => {
					server.off("listening", onListening);
					reject(error);
				};
				const onListening = (): void => {
					server.off("error", onError);
					resolve();
				};
				server.once("error", onError);
				server.once("listening", onListening);
				server.listen(ownedBindPath);
			});
			const stats = await lstat(ownedBindPath);
			if (!stats.isSocket()) throw new Error(`Unix listener path is not a socket after binding: ${ownedBindPath}`);
			this.socketIdentity = { dev: stats.dev, ino: stats.ino };
			await link(ownedBindPath, this.path);
			await setSocketMode(this.path, this.mode);
			this.boundPath = this.path;
		} catch (error) {
			await this.closeServerAndCleanup(server);
			this.server = undefined;
			throw error;
		}
	}

	async close(): Promise<void> {
		if (this.closePromise) return this.closePromise;
		this.closing = true;
		this.closePromise = this.closeInternal();
		return this.closePromise;
	}

View on GitHub (pinned to 4af9d21d3b)

Solutions

  1. The bound path is not a socket; remove conflicting files at the path and retry.

When it happens

Trigger: Thrown at packages/server/src/transports/unix/listener.ts:89 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/5a3d38283a540799. Report an issue: GitHub.