{"record":{"id":"749279e2e9cb7dc7","repo":"firecracker-microvm/firecracker","slug":"the-channel-s-sending-half-was-disconnected-canno","errorCode":null,"errorMessage":"The channel's sending half was disconnected. Cannot receive data.","messagePattern":"The channel's sending half was disconnected\\. Cannot receive data\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/firecracker/src/api_server_adapter.rs","lineNumber":137,"sourceCode":"    }\n}\nimpl MutEventSubscriber for ApiServerAdapter {\n    /// Handle a read event (EPOLLIN).\n    fn process(&mut self, event: Events, _: &mut EventOps) {\n        let source = event.fd();\n        let event_set = event.event_set();\n\n        if source == self.api_event_fd.as_raw_fd() && event_set == EventSet::IN {\n            let _ = self.api_event_fd.read();\n            match self.from_api.try_recv() {\n                Ok(api_request) => {\n                    self.request = Some(api_request);\n                }\n                Err(TryRecvError::Empty) => {\n                    warn_unrestricted!(\"Got a spurious notification from api thread\");\n                }\n                Err(TryRecvError::Disconnected) => {\n                    panic!(\"The channel's sending half was disconnected. Cannot receive data.\");\n                }\n            };\n        } else {\n            error_unrestricted!(\"Spurious EventManager event for handler: ApiServerAdapter\");\n        }\n    }\n\n    fn init(&mut self, ops: &mut EventOps) {\n        if let Err(err) = ops.add(Events::new(&self.api_event_fd, EventSet::IN)) {\n            error_unrestricted!(\"Failed to register activate event: {}\", err);\n        }\n    }\n}\n\n#[allow(clippy::too_many_arguments)]\npub(crate) fn run_with_api(\n    seccomp_filters: &mut BpfThreadMap,\n    config_json: Option<String>,","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/firecracker-microvm/firecracker/blob/0a745def42ddf4cc2a744d79a08a27ff50b5d27a/src/firecracker/src/api_server_adapter.rs#L119-L155","documentation":"Error \"The channel's sending half was disconnected. Cannot receive data.\" thrown in firecracker-microvm/firecracker.","triggerScenarios":"Thrown at src/firecracker/src/api_server_adapter.rs:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep the owner of the channel's sending half alive for the lifetime of the receiver; do not drop the sender before API server shutdown.","Treat the disconnection as a shutdown signal and exit the receive loop cleanly instead of propagating an error."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0a745def42ddf4cc2a744d79a08a27ff50b5d27a","analyzedAt":"2026-08-19T05:27:02.517Z","contentChangedAt":"2026-08-19T05:27:02.517Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}