firecracker-microvm/firecracker · error

Error receiving API request.

Error message

Error receiving API request.

What it means

Error "Error receiving API request." thrown in firecracker-microvm/firecracker.

Source

Thrown at src/firecracker/src/api_server_adapter.rs:110

            .map_err(|_| ())
            .expect("one-shot channel closed");
    }

    fn handle_request(&mut self, event_manager: &mut EventManager) {
        if let Some(api_request) = self.request.take() {
            let request_is_pause = *api_request == VmmAction::Pause;
            self._handle_request(*api_request, event_manager);

            // If the latest req is a pause request, temporarily switch to a mode where we
            // do blocking `recv`s on the `from_api` receiver in a loop, until we get
            // unpaused. The device emulation is implicitly paused since we do not
            // relinquish control to the event manager because we're not returning from
            // `process`.
            if request_is_pause {
                // This loop only attempts to process API requests, so things like the
                // metric flush timerfd handling are frozen as well.
                loop {
                    let req = self.from_api.recv().expect("Error receiving API request.");
                    let req_is_resume = *req == VmmAction::Resume;
                    self._handle_request(*req, event_manager);
                    if req_is_resume {
                        break;
                    }
                }
            }
        }
    }
}
impl MutEventSubscriber for ApiServerAdapter {
    /// Handle a read event (EPOLLIN).
    fn process(&mut self, event: Events, _: &mut EventOps) {
        let source = event.fd();
        let event_set = event.event_set();

        if source == self.api_event_fd.as_raw_fd() && event_set == EventSet::IN {
            let _ = self.api_event_fd.read();

View on GitHub (pinned to 0a745def42)

Solutions

  1. Check the API socket and event loop for errors that break request reception (closed fd, epoll error).
  2. Verify the API thread did not exit or panic before the request arrived.

When it happens

Trigger: Thrown at src/firecracker/src/api_server_adapter.rs:110 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/a70053a394843558. Report an issue: GitHub.