{"record":{"id":"cf2d89c2caf31b05","repo":"tinyhumansai/openhuman","slug":"playwright-daemon-stdout-unavailable","errorCode":null,"errorMessage":"Playwright daemon stdout unavailable","messagePattern":"Playwright daemon stdout unavailable","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/playwright_backend.rs","lineNumber":276,"sourceCode":"        .spawn()\n        .map_err(|error| {\n            tracing::debug!(\n                error = %error,\n                \"[browser::playwright] failed to spawn backend daemon\"\n            );\n            error\n        })\n        .context(\n            \"Failed to start Playwright backend. Ensure Node.js and the Playwright package are installed.\",\n        )?;\n    let stdin = child\n        .stdin\n        .take()\n        .ok_or_else(|| anyhow::anyhow!(\"Playwright daemon stdin unavailable\"))?;\n    let stdout = child\n        .stdout\n        .take()\n        .ok_or_else(|| anyhow::anyhow!(\"Playwright daemon stdout unavailable\"))?;\n\n    if let Some(stderr) = child.stderr.take() {\n        tokio::spawn(async move {\n            let mut lines = BufReader::new(stderr).lines();\n            while let Ok(Some(line)) = lines.next_line().await {\n                tracing::debug!(\"[browser::playwright] stderr: {line}\");\n            }\n        });\n    }\n\n    tracing::debug!(\"[browser::playwright] backend daemon spawned\");\n    Ok(PlaywrightDaemon {\n        child,\n        stdin,\n        stdout: BufReader::new(stdout),\n    })\n}\n","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/playwright_backend.rs#L258-L294","documentation":"Guard in start_daemon for the Playwright backend: the daemon's stdout pipe could not be taken after spawn, so responses from the Node.js daemon cannot be read. Sibling of the stdin guard; both fire only in abnormal spawn states.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:276 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Restart the core/tool to respawn the daemon","Verify Node.js and the Playwright package are installed","Report if persistent — stdio piping may be misconfigured"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}