firecracker-microvm/firecracker · error
Cannot add HTTP server kill switch
Error message
Cannot add HTTP server kill switch
What it means
Error "Cannot add HTTP server kill switch" thrown in firecracker-microvm/firecracker.
Source
Thrown at src/firecracker/src/api_server_adapter.rs:201
let mut server = match HttpServer::new(&bind_path) {
Ok(s) => s,
Err(ServerError::IOError(inner)) if inner.kind() == std::io::ErrorKind::AddrInUse => {
let sock_path = bind_path.display().to_string();
return Err(ApiServerError::FailedToBindSocket(sock_path));
}
Err(err) => {
return Err(ApiServerError::FailedToBindAndRunHttpServer(err));
}
};
info_unrestricted!("Listening on API socket ({bind_path:?}).");
let api_kill_switch_clone = api_kill_switch
.try_clone()
.expect("Failed to clone API kill switch");
server
.add_kill_switch(api_kill_switch_clone)
.expect("Cannot add HTTP server kill switch");
// Start the separate API thread.
let api_thread = thread::Builder::new()
.name("fc_api".to_owned())
.spawn(move || {
ApiServer::new(to_vmm, from_vmm, to_vmm_event_fd).run(
server,
process_time_reporter,
&api_seccomp_filter,
api_payload_limit,
);
})
.expect("API thread spawn failed.");
let mut event_manager = EventManager::new().expect("Unable to create EventManager");
// Create the firecracker metrics object responsible for periodically printing metrics.
let firecracker_metrics = Arc::new(Mutex::new(super::metrics::PeriodicMetrics::new()));View on GitHub (pinned to 0a745def42)
Solutions
- Verify the HTTP server's kill-switch registry is initialized before adding switches.
- Check for a prior panic that left the kill-switch state inconsistent.
When it happens
Trigger: Thrown at src/firecracker/src/api_server_adapter.rs:201 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of firecracker-microvm/firecracker@0a745def42 (2026-08-19).
Data as JSON: /api/errors/58dc287cad262391.
Report an issue: GitHub.