[vbox-dev] VirtualBox 4.1.20 stuck in 100% CPU loop with FreeBSD virtio-net guest

Ed Maste emaste at freebsd.org
Thu Sep 6 19:04:14 GMT 2012


I'm posting here (rather than filing a bug report) because the host is
FreeBSD.  I am not sure if this issue is in VirtualBox itself or with
the FreeBSD host kernel layer though.

Host Details
------------
% uname -a
FreeBSD feynman 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #1 r240164M: Thu
Sep  6 10:40:42 EDT 2012
emaste at feynman:/data2/emaste/obj/home/emaste/src/9/sys/TEST  amd64

% dmesg | grep CPU:
CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (3430.24-MHz K8-class CPU)

16 GB of RAM, Intel e1000 NIC

VirtualBox
----------
FreeBSD port /usr/ports/emulators/virtualbox-ose 4.1.20
>From "About" in the GUI: 4.1.20_OSE r80170

Guest
-----
OS Type: FreeBSD (64 bit)
Base Memory: 1024 MB
Acceleration: VT-x/AMD-V, Nested Paging
Network: Adapter 1: Paravirtualized Network (Bridged adapter, em0)

% uname -a
FreeBSD  10.0-CURRENT FreeBSD 10.0-CURRENT #1 r238129: Thu Jul  5
15:11:38 EDT 2012
emaste at feynman:/data/emaste/obj/home/emaste/src/head/sys/TEST  amd64

if_vtnet.ko loaded in /boot/loader.conf (virtio-net guest driver)

Reproduction
------------
1. Connect host's physical NIC em0 back-to-back to another machine.
2. Set up the guest's Adapter 1 as bridged to em0.
3. Assign IP addresses to vtnet0 in the guest and to the other machine.
(In my case, 172.16.0.2 for vtnet0 and 172.16.0.4 for em0 on my laptop.)
4. Execute iperf -s on the other machine.
5. Execute iperf -c <other IP> in the guest.
6. After a few moments VirtualBox has one thread stuck spinning at
100% in kernel and cannot be killed.

Notes:
- This does not happen with the same guest, using an emulated e1000 NIC instead.
- This does not happen with a Ubuntu 12 guest using virtio-net.
- I'm having trouble with debugging at the moment, but it appears to
be spinning in a timer callback.
- I haven't yet been able to test with a non-FreeBSD host, or with
4.2.0 on FreeBSD.

-Ed




More information about the vbox-dev mailing list