{"record":{"id":"f2aa959d682e3d41","repo":"firecracker-microvm/firecracker","slug":"vcpu-channel-unexpectedly-closed","errorCode":null,"errorMessage":"vcpu channel unexpectedly closed","messagePattern":"vcpu channel unexpectedly closed","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/vmm/src/vstate/vcpu.rs","lineNumber":275,"sourceCode":"                    self.kvm_vcpu.kvmclock_ctrl();\n                    return VcpuRunState::Paused;\n                }\n                // Emulation errors lead to vCPU exit.\n                Err(_) => return self.exit(FcExitCode::GenericError),\n            }\n        }\n\n        // By default don't change state.\n        let mut state = VcpuRunState::Running;\n\n        // Break this emulation loop on any transition request/external event.\n        match self.event_receiver.try_recv() {\n            // Running ---- Pause ----> Paused\n            Ok(VcpuEvent::Pause) => {\n                // Nothing special to do.\n                self.response_sender\n                    .send(VcpuResponse::Paused)\n                    .expect(\"vcpu channel unexpectedly closed\");\n\n                #[cfg(target_arch = \"x86_64\")]\n                self.kvm_vcpu.kvmclock_ctrl();\n\n                // Move to 'paused' state.\n                state = VcpuRunState::Paused;\n            }\n            Ok(VcpuEvent::Resume) => {\n                self.response_sender\n                    .send(VcpuResponse::Resumed)\n                    .expect(\"vcpu channel unexpectedly closed\");\n            }\n            // SaveState cannot be performed on a running Vcpu.\n            Ok(VcpuEvent::SaveState) => {\n                self.response_sender\n                    .send(VcpuResponse::NotAllowed(String::from(\n                        \"save/restore unavailable while running\",\n                    )))","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/firecracker-microvm/firecracker/blob/81b38b9dad6056d7a48073e95ac5a9aed51cb2ab/src/vmm/src/vstate/vcpu.rs#L257-L293","documentation":"Error \"vcpu channel unexpectedly closed\" thrown in firecracker-microvm/firecracker.","triggerScenarios":"Thrown at src/vmm/src/vstate/vcpu.rs:275 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Investigate why the vCPU thread's channel closed; usually the vCPU thread exited or panicked first.","Handle the closed channel as a vCPU-exit signal and shut the VM down cleanly."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81b38b9dad6056d7a48073e95ac5a9aed51cb2ab","analyzedAt":"2026-08-19T05:27:02.517Z","contentChangedAt":"2026-08-19T05:27:02.517Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}