Multiple directory volume mounts fail with RegisterNetDevice(IrqsExhausted) on Linux/libkrun
Summary
Using the official BoxLite CLI directly, a box starts successfully with one or two directory volume mounts, but fails to start with three directory volume mounts.
The failure happens before the command runs inside the guest:
Building the microVM failed: RegisterNetDevice(IrqsExhausted)
VM failed to start (libkrun status=-22)
This was reproduced without any downstream wrapper. The commands below call the official boxlite CLI directly.
Environment
- BoxLite CLI:
boxlite 0.9.7
- OS: Ubuntu 22.04.5 LTS
- Kernel:
Linux 5.15.0-40-generic x86_64
- Architecture:
x86_64
- CPU: AMD EPYC-Milan Processor
- Hypervisor: KVM
- Test image:
alpine:3.19
uname -a:
Linux OPS-3430 5.15.0-40-generic #43-Ubuntu SMP Wed Jun 15 12:54:21 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Installation Used for Repro
mkdir -p /tmp/boxlite-bin
BOXLITE_INSTALL_DIR=/tmp/boxlite-bin curl -fsSL https://sh.boxlite.ai | BOXLITE_INSTALL_DIR=/tmp/boxlite-bin sh
/tmp/boxlite-bin/boxlite --version
Output:
Reproduction
ROOT=$(mktemp -d /tmp/boxlite-multi-mount-XXXXXX)
for n in 1 2 3 4 5; do
mkdir -p "$ROOT/dir$n"
echo "dir$n" > "$ROOT/dir$n/file.txt"
done
for count in 2 3; do
echo "=== count=$count ==="
args=()
checks=""
for n in $(seq 1 "$count"); do
args+=("-v" "$ROOT/dir$n:/mnt/dir$n")
checks="$checks cat /mnt/dir$n/file.txt;"
done
BOXLITE_HOME="$ROOT/home-$count" \
BOXLITE_RUNTIME_DIR=/tmp/boxlite-bin/runtime \
/tmp/boxlite-bin/boxlite run --rm "${args[@]}" alpine:3.19 sh -lc "$checks"
done
Expected Behavior
Both runs should start the box and print the mounted file contents:
Actual Behavior
Two directory volumes work:
=== count=2 ===
dir1
dir2
[boxlite] Auto-stopping non-detached box: id=qbrbiLGZcQhr, pid=1775403
Three directory volumes fail during VM startup:
=== count=3 ===
Building the microVM failed: RegisterNetDevice(IrqsExhausted)
VM failed to start (libkrun status=-22)
Detailed log excerpt:
[shim] T+19ms: entering VM (krun_start_enter)
[krun] 09:11:57.150665 krun_start_enter called
[2026-07-07T09:11:57.233431Z ERROR krun] Building the microVM failed: RegisterNetDevice(IrqsExhausted)
[krun] 09:11:57.238909 krun_start_enter returned (status=-22, elapsed=88ms)
Error: Engine("VM failed to start (libkrun status=-22)")
Additional Check
Running the same three-volume command with --security disable still fails with the same error:
BOXLITE_HOME="$ROOT/home-security-disabled" \
BOXLITE_RUNTIME_DIR=/tmp/boxlite-bin/runtime \
/tmp/boxlite-bin/boxlite run --rm \
--security disable \
-v "$ROOT/dir1:/mnt/dir1" \
-v "$ROOT/dir2:/mnt/dir2" \
-v "$ROOT/dir3:/mnt/dir3" \
alpine:3.19 sh -lc 'cat /mnt/dir1/file.txt; cat /mnt/dir2/file.txt; cat /mnt/dir3/file.txt'
Result:
Building the microVM failed: RegisterNetDevice(IrqsExhausted)
VM failed to start (libkrun status=-22)
Notes
From a quick source read, each user -v/--volume appears to become a distinct virtiofs share. On the Linux x86_64/libkrun path, there are also internal devices such as shared filesystem, block disks, vsock/network, balloon/rng, etc. The failure may be related to the available IRQ/device limit being exhausted when additional virtiofs devices are added.
The visible failure is reported at net device registration, but the trigger seems to be the increased number of volume-backed virtiofs devices.
Multiple directory volume mounts fail with
RegisterNetDevice(IrqsExhausted)on Linux/libkrunSummary
Using the official BoxLite CLI directly, a box starts successfully with one or two directory volume mounts, but fails to start with three directory volume mounts.
The failure happens before the command runs inside the guest:
This was reproduced without any downstream wrapper. The commands below call the official
boxliteCLI directly.Environment
boxlite 0.9.7Linux 5.15.0-40-generic x86_64x86_64alpine:3.19uname -a:Installation Used for Repro
mkdir -p /tmp/boxlite-bin BOXLITE_INSTALL_DIR=/tmp/boxlite-bin curl -fsSL https://sh.boxlite.ai | BOXLITE_INSTALL_DIR=/tmp/boxlite-bin sh /tmp/boxlite-bin/boxlite --versionOutput:
Reproduction
Expected Behavior
Both runs should start the box and print the mounted file contents:
Actual Behavior
Two directory volumes work:
Three directory volumes fail during VM startup:
Detailed log excerpt:
Additional Check
Running the same three-volume command with
--security disablestill fails with the same error:Result:
Notes
From a quick source read, each user
-v/--volumeappears to become a distinct virtiofs share. On the Linux x86_64/libkrun path, there are also internal devices such as shared filesystem, block disks, vsock/network, balloon/rng, etc. The failure may be related to the available IRQ/device limit being exhausted when additional virtiofs devices are added.The visible failure is reported at net device registration, but the trigger seems to be the increased number of volume-backed virtiofs devices.