{"record":{"id":"39136acf97fa9d4b","repo":"can1357/oh-my-pi","slug":"lsp-mux-smoke-failed-no-ping-response-proc-pee","errorCode":null,"errorMessage":"lsp mux smoke failed: no ping response (${proc.peekStderr().slice(-500) || \"no stderr\"})","messagePattern":"lsp mux smoke failed: no ping response \\((.+?)\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/coding-agent/src/lsp/mux/daemon.ts","lineNumber":342,"sourceCode":"\t\tcwd: spawn.cwd,\n\t\tenv: workerEnvFromParent({\n\t\t\t[LSP_MUX_SOCKET_ENV]: endpoint,\n\t\t\t[LSP_MUX_PROJECT_DIR_ENV]: process.cwd(),\n\t\t}),\n\t});\n\ttry {\n\t\tconst deadline = Date.now() + SMOKE_TEST_TIMEOUT_MS;\n\t\tlet alive = false;\n\t\twhile (Date.now() < deadline) {\n\t\t\tif (proc.exitCode !== null) break;\n\t\t\tif (await probeMux(endpoint)) {\n\t\t\t\talive = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tawait Bun.sleep(200);\n\t\t}\n\t\tif (!alive) {\n\t\t\tthrow new Error(`lsp mux smoke failed: no ping response (${proc.peekStderr().slice(-500) || \"no stderr\"})`);\n\t\t}\n\t} finally {\n\t\tproc.kill();\n\t\tawait proc.exited.catch(() => {});\n\t}\n}\n","sourceCodeStart":324,"sourceCodeEnd":349,"githubUrl":"https://github.com/can1357/oh-my-pi/blob/969062200754ea02cfac922e5ebb8c608c079e15/packages/coding-agent/src/lsp/mux/daemon.ts#L324-L349","documentation":"The LSP mux smoke test spawns a mux process, sends a ping over the framed link, and waits for a pong within a polling window. If no ping response arrives, the daemon can't be considered healthy; the error includes the last 500 bytes of the child's stderr (or \"no stderr\") to expose why the process didn't answer.","triggerScenarios":"runSmokeTest → smokeTestLspMux: the spawned mux process fails to bind its socket/pipe, crashes on startup, or hangs, so the ping loop exhausts its retries without a response.","commonSituations":"Port/socket path conflicts or stale socket files; mux binary incompatible or missing; insufficient permissions on the Unix socket path; platform-specific named-pipe issues on Windows; resource exhaustion preventing process startup.","solutions":["Inspect the stderr excerpt in the message for the child's actual failure (bind error, missing binary, exception)","Remove stale socket/pipe files at the endpoint and retry","Verify the mux binary/entry point runs standalone","Check permissions on the socket directory and that no firewall/AV blocks local IPC"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-check the endpoint before spawning the mux daemon\nimport * as fs from 'node:fs';\nif (process.platform !== 'win32' && fs.existsSync(sockPath)) {\n  fs.unlinkSync(sockPath); // clear stale socket\n}","typeGuard":null,"tryCatchPattern":"try {\n  await smokeTestLspMux(endpoint);\n} catch (err) {\n  if (err.message.startsWith('lsp mux smoke failed: no ping response')) {\n    logger.error('mux daemon failed smoke test', { stderr: err.message });\n    // retry once after clearing endpoint, then surface stderr to the user\n  }\n  throw err;\n}","preventionTips":["Read the stderr excerpt embedded in the error — it names the child's real failure","Clear stale Unix socket files at the endpoint before startup","Verify the mux binary/entrypoint works standalone","Ensure the socket directory exists and is writable"],"tags":["lsp","mux","smoke-test","ipc","process"],"backgroundTag":"lsp-mux-ping-timeout","analyzedSha":"969062200754ea02cfac922e5ebb8c608c079e15","analyzedAt":"2026-08-31T10:29:35.737Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}