Skip to content

Releases: A3S-Lab/libkrun

libkrun v1.17.5 Windows prebuilt (WHPX)

17 Mar 14:12

Choose a tag to compare

Prebuilt Windows DLLs for libkrun v1.17.5.

Contents of krun-windows-x64.zip

  • krun.dll — libkrun Windows WHPX backend (2.3 MB)
  • krun.lib — import library for linking
  • libkrunfw.dll — embedded Linux kernel (19 MB), loaded at runtime by krun.dll

Usage

See krun-sys-windows/ for Rust FFI bindings and build instructions.

libkrun v1.17.5 - vsock Queue Overflow Fixes

11 Mar 03:37

Choose a tag to compare

🎉 libkrun v1.17.5

vsock Queue Overflow Fixes

This release resolves critical vsock queue overflow issues that caused network stalls under heavy load.

Key Fixes

vsock Queue Management:

  • Fix queue overflow when container applications perform heavy network communication
  • Implement backpressure mechanism with rx_ready_fd signaling
  • Add paused_proxies queue to prevent CPU busy-loops
  • Fix CreditUpdate logic to only update on successful packet push

Flow Control:

  • Prevent flow control deadlocks in credit-based flow control
  • Add proper signaling when RX queue space becomes available
  • Implement level-triggered epoll handling to avoid busy-loops

Code Quality:

  • Add missing AsRawFd imports in balloon and rng event handlers
  • Add detailed error logging for queue overflow scenarios

Verification

  • ✅ nginx container test: 10/10 requests successful
  • ✅ No queue overflow errors under load
  • ✅ Stable network communication
  • ✅ Proper backpressure handling

Files Changed

  • src/devices/src/virtio/vsock/muxer.rs
  • src/devices/src/virtio/vsock/muxer_thread.rs
  • src/devices/src/virtio/vsock/event_handler.rs
  • src/devices/src/virtio/vsock/tsi_stream.rs
  • src/devices/src/virtio/vsock/unix.rs
  • src/devices/src/virtio/vsock/proxy.rs
  • src/devices/src/virtio/balloon/event_handler.rs
  • src/devices/src/virtio/rng/event_handler.rs

Upgrade Notes

This is a recommended upgrade for all users experiencing network stalls or high CPU usage in vsock communication.

libkrun-1.17.4

10 Mar 11:43

Choose a tag to compare

What's Changed

Bug Fixes

  • fix(vsock): fix queue overflow, flow control deadlock, and busy-loop backpressure

Six layered bugs causing vsock to stall or spin under heavy network load:

  1. CreditUpdate flow control deadlocklast_tx_cnt_sent was updated before push_packet confirmed success; a dropped CreditUpdate would never be retried, permanently freezing the guest send window.

  2. Silent packet droppush_packet silently discarded packets when the MuxerRxQ was full; now returns bool and emits warn! on drop.

  3. No interrupt on rxq fallbackVsockMuxer::push_packet didn't signal the guest interrupt after falling back to rxq, leaving the guest unaware of pending data.

  4. CreditRequest never triggered interrupt — The WaitForCredit path left signal_queue = false, so the guest never received a wake-up to respond with CreditUpdate.

  5. RST packets without interruptprocess_op_request / process_stream_rw sent RST packets without signaling the interrupt, causing zombie connections under load.

  6. MuxerThread busy-loop — When the virtio RX queue had no available descriptors, level-triggered epoll fired continuously on the TCP fd (100% CPU, no progress). Fixed with a backpressure mechanism: proxies are removed from epoll (needs_rx_space=true) and resumed via an rx_ready_fd EventFd written by the device thread on each RX queue replenishment event.

Full Changelog: v1.17.3...v1.17.4