{"record":{"id":"e9a4a89cbeb8b9a3","repo":"openai/codex","slug":"socket-closed-while-receiving-frame-header","errorCode":null,"errorMessage":"socket closed while receiving frame header","messagePattern":"socket closed while receiving frame header","errorType":"exception","errorClass":"std::io::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/shell-escalation/src/unix/socket.rs","lineNumber":129,"sourceCode":"                    (read, msg.control_len())\n                };\n                control.truncate(control_len);\n                captured_control = true;\n                Ok(read)\n            }) {\n                Ok(Ok(read)) => read,\n                Ok(Err(err)) => return Err(err),\n                Err(_would_block) => continue,\n            }\n        } else {\n            match guard.try_io(|inner| inner.get_ref().recv(&mut header[filled..])) {\n                Ok(Ok(read)) => read,\n                Ok(Err(err)) => return Err(err),\n                Err(_would_block) => continue,\n            }\n        };\n        if read == 0 {\n            return Err(std::io::Error::new(\n                std::io::ErrorKind::UnexpectedEof,\n                \"socket closed while receiving frame header\",\n            ));\n        }\n\n        filled += read;\n        assert!(filled <= LENGTH_PREFIX_SIZE);\n        if filled == LENGTH_PREFIX_SIZE {\n            let len_bytes = assume_init_slice(&header);\n            let payload_len = u32::from_le_bytes(*len_bytes) as usize;\n            let fds = extract_fds(assume_init(&control));\n            return Ok((payload_len, fds));\n        }\n    }\n    unreachable!(\"header loop always returns\")\n}\n\n/// Read `message_len` bytes from a SOCK_STREAM socket.","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/shell-escalation/src/unix/socket.rs#L111-L147","documentation":"Error \"socket closed while receiving frame header\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/shell-escalation/src/unix/socket.rs:129 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}