{"record":{"id":"53765bb2e31c5364","repo":"tinyhumansai/openhuman","slug":"timed-out-waiting-for-playwright-response","errorCode":null,"errorMessage":"Timed out waiting for Playwright response","messagePattern":"Timed out waiting for Playwright response","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/browser/playwright_backend.rs","lineNumber":166,"sourceCode":"        let response = match timeout(PLAYWRIGHT_RESPONSE_TIMEOUT, read_response(daemon)).await {\n            Ok(Ok(response)) => response,\n            Ok(Err(error)) => {\n                tracing::debug!(\n                    error = %error,\n                    request_id = id,\n                    \"[browser::playwright] daemon read failed; dropping daemon\"\n                );\n                self.daemon = None;\n                return Err(error).context(\"Failed to read Playwright response\");\n            }\n            Err(_) => {\n                tracing::debug!(\n                    request_id = id,\n                    timeout_ms = PLAYWRIGHT_RESPONSE_TIMEOUT.as_millis() as u64,\n                    \"[browser::playwright] daemon response timed out; dropping daemon\"\n                );\n                self.daemon = None;\n                anyhow::bail!(\"Timed out waiting for Playwright response\");\n            }\n        };\n\n        if response.id != Some(id) {\n            tracing::debug!(\n                expected_id = id,\n                response_id = ?response.id,\n                \"[browser::playwright] daemon response id mismatch; dropping daemon\"\n            );\n            self.daemon = None;\n            anyhow::bail!(\"Playwright daemon response id mismatch\");\n        }\n\n        if response.success {\n            tracing::debug!(\n                request_id = id,\n                action = %action,\n                \"[browser::playwright] action completed\"","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/browser/playwright_backend.rs#L148-L184","documentation":"The Playwright daemon did not deliver a response line within PLAYWRIGHT_RESPONSE_TIMEOUT. The wrapper treats the daemon as wedged or dead, clears self.daemon so the next call respawns it, and aborts the current action.","triggerScenarios":"Thrown at src/openhuman/tools/impl/browser/playwright_backend.rs:166 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the browser action; the dropped daemon is restarted on the next request","Check whether the Playwright daemon process is hung or CPU-starved and restart it","Reduce page load or simplify the action so the daemon can answer within the fixed timeout"],"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-14T05:17:10.506Z"}