firecracker-microvm/firecracker · error
balloon: invalid queue id: {qidx}
Error message
balloon: invalid queue id: {qidx} What it means
Error "balloon: invalid queue id: {qidx}" thrown in firecracker-microvm/firecracker.
Source
Thrown at src/vmm/src/devices/virtio/balloon/device.rs:659
queue.add_used(head.index, 0)?;
needs_interrupt = true;
}
queue.advance_used_ring_idx();
if needs_interrupt {
self.signal_used_queue(idx)?;
}
Ok(())
}
pub(crate) fn signal_used_queue(&self, qidx: usize) -> Result<(), BalloonError> {
self.interrupt_trigger()
.trigger(VirtioInterruptType::Queue(
qidx.try_into()
.unwrap_or_else(|_| panic!("balloon: invalid queue id: {qidx}")),
))
.map_err(|err| {
METRICS.event_fails.inc();
BalloonError::InterruptError(err)
})
}
/// Process device virtio queue(s).
pub fn process_virtio_queues(&mut self) -> Result<(), InvalidAvailIdx> {
if let Err(BalloonError::InvalidAvailIdx(err)) = self.process_inflate() {
return Err(err);
}
if let Err(BalloonError::InvalidAvailIdx(err)) = self.process_deflate_queue() {
return Err(err);
}
if self.free_page_hinting()
&& let Err(BalloonError::InvalidAvailIdx(err)) = self.process_free_page_hinting_queue()View on GitHub (pinned to cc535f035f)
Solutions
- Ensure the queue index passed to the balloon device is within the number of queues the device exposes.
- Verify virtio queue negotiation completed before signalling queue events.
When it happens
Trigger: Thrown at src/vmm/src/devices/virtio/balloon/device.rs:664 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of firecracker-microvm/firecracker@cc535f035f (2026-08-19).
Data as JSON: /api/errors/5ded8cf23fb8906b.
Report an issue: GitHub.