firecracker-microvm/firecracker · error
vcpu channel unexpectedly closed
Error message
vcpu channel unexpectedly closed
What it means
Error "vcpu channel unexpectedly closed" thrown in firecracker-microvm/firecracker.
Source
Thrown at src/vmm/src/vstate/vcpu.rs:275
self.kvm_vcpu.kvmclock_ctrl();
return VcpuRunState::Paused;
}
// Emulation errors lead to vCPU exit.
Err(_) => return self.exit(FcExitCode::GenericError),
}
}
// By default don't change state.
let mut state = VcpuRunState::Running;
// Break this emulation loop on any transition request/external event.
match self.event_receiver.try_recv() {
// Running ---- Pause ----> Paused
Ok(VcpuEvent::Pause) => {
// Nothing special to do.
self.response_sender
.send(VcpuResponse::Paused)
.expect("vcpu channel unexpectedly closed");
#[cfg(target_arch = "x86_64")]
self.kvm_vcpu.kvmclock_ctrl();
// Move to 'paused' state.
state = VcpuRunState::Paused;
}
Ok(VcpuEvent::Resume) => {
self.response_sender
.send(VcpuResponse::Resumed)
.expect("vcpu channel unexpectedly closed");
}
// SaveState cannot be performed on a running Vcpu.
Ok(VcpuEvent::SaveState) => {
self.response_sender
.send(VcpuResponse::NotAllowed(String::from(
"save/restore unavailable while running",
)))View on GitHub (pinned to 81b38b9dad)
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.
When it happens
Trigger: Thrown at src/vmm/src/vstate/vcpu.rs:275 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of firecracker-microvm/firecracker@81b38b9dad (2026-08-19).
Data as JSON: /api/errors/f2aa959d682e3d41.
Report an issue: GitHub.