VirtualBox

Opened 8 years ago

Last modified 8 years ago

#15913 new defect

Installation of guest additions in Fedora 24 32 bits guest hangs => Linux 4.7 bug

Reported by: cquike Owned by:
Component: guest additions Version: VirtualBox 5.0.24
Keywords: Cc: Feline
Guest type: Linux Host type: Linux

Description (last modified by Frank Mehnert)

I am trying to install the guest additions in a fresh installed Fedora 24 32 bits but the VBoxLinuxAdditions.run script hangs.

The VirtualBox version I am using is 5.0.24, but I have tried to install guest additions 5.1.4, since the former one doesn't compile under kernel 4.7.2 32 bits.

The exact sequence of commands used are:

# sudo dnf install install gcc cpp kernel-devel kernel-headers kernel-PAE-devel
# sudo wget http://download.virtualbox.org/virtualbox/5.1.4/VBoxGuestAdditions_5.1.4.iso
# sudo mkdir /tmp/vbox
# sudo mount -o loop /home/vagrant/VBoxGuestAdditions_5.1.4.iso /tmp/vbox
# sudo sh /tmp/vbox/VBoxLinuxAdditions.run

In the last step it hangs after the following messages are shown:

Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.4 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Building Guest Additions kernel modules.
vboxadd.sh: Starting the VirtualBox Guest Additions.

I have also tried with the latest test build at https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_5.1.5-110588.iso but the result is the same.

Exactly the same procedure for a Fedora 24 64 bits guest is working fine and the guest installation finishes without problems.

A pstree command shows the following relevant process tree:

  │   │           └─sudo,30032 sh -x /tmp/vbox/VBoxLinuxAdditions.run
  │   │               └─sh,30033 -x /tmp/vbox/VBoxLinuxAdditions.run
  │   │                   └─sh,30090 ./install.sh /tmp/vbox/VBoxLinuxAdditions.run
  │   │                       └─vboxadd,30253 /opt/VBoxGuestAdditions-5.1.5/init/vboxadd setup
  │   │                           └─modprobe,32361 vboxsf

So it looks like it is loading the kernel module where the installation hangs. This is the list of packages I have installed which are relevant to the kernel:

$ rpm -qa | grep kernel 
kernel-headers-4.7.2-201.fc24.i686
kernel-PAE-modules-4.7.2-201.fc24.i686
abrt-addon-kerneloops-2.8.2-1.fc24.i686
kernel-devel-4.7.2-201.fc24.i686
kernel-PAE-core-4.7.2-201.fc24.i686
kernel-PAE-devel-4.7.2-201.fc24.i686
libreport-plugin-kerneloops-2.7.2-1.fc24.i686

I have tried to have a look to the stack of the modprobe command:

#sudo cat /proc/32361/stack 
[<f8edddfd>] rtR0SemEventMultiLnxWait.isra.2+0x36d/0x3c0 [vboxguest]
[<f8edde73>] VBoxGuest_RTSemEventMultiWaitEx+0x23/0x30 [vboxguest]
[<f8eec5db>] VBoxGuest_RTSemEventMultiWait+0x5b/0x60 [vboxguest]
[<f8ed4361>] vgdrvHgcmAsyncWaitCallbackWorker+0xe1/0x220 [vboxguest]
[<f8ed44be>] vgdrvHgcmAsyncWaitCallback+0x1e/0x20 [vboxguest]
[<f8ed6ff1>] VbglR0HGCMInternalConnect+0x111/0x130 [vboxguest]
[<f8ed60a5>] VGDrvCommonIoCtl+0xad5/0x1550 [vboxguest]
[<f8ed2245>] VBoxGuestIDCCall+0x45/0x70 [vboxguest]
[<f8625b4d>] vbglDriverIOCtl+0x2d/0x40 [vboxsf]
[<f8626780>] VbglHGCMConnect+0x50/0xb0 [vboxsf]
[<f8626a8e>] VbglR0SfConnect+0x5e/0x90 [vboxsf]
[<f840b075>] init+0x75/0x1000 [vboxsf]
[<c0402182>] do_one_initcall+0x42/0x170
[<c056e0af>] do_init_module+0x50/0x1a8
[<c04f4c1a>] load_module+0x213a/0x27a0
[<c04f54b1>] SyS_finit_module+0xb1/0x100
[<c040388d>] do_fast_syscall_32+0x8d/0x140
[<c0b3f932>] sysenter_past_esp+0x47/0x75
[<ffffffff>] 0xffffffff

I don't know if that's useful.

I attach the output of running the installation script with sh -x, but I am afraid it doesn't give much extra information.

I also attach VBoxSVC.log just in case it is useful.

Regards

Attachments (2)

VBoxSVC.log.save.gz (75.6 KB ) - added by cquike 8 years ago.
VBoxSVC.log
log.txt (3.9 KB ) - added by cquike 8 years ago.
output of sh -x /tmp/vbox/VBoxLinuxAdditions.run

Download all attachments as: .zip

Change History (8)

by cquike, 8 years ago

Attachment: VBoxSVC.log.save.gz added

VBoxSVC.log

by cquike, 8 years ago

Attachment: log.txt added

output of sh -x /tmp/vbox/VBoxLinuxAdditions.run

comment:1 by Frank Mehnert, 8 years ago

Thanks for the detailed analysis. I was able to reproduce the problem. Try to boot your guest in single mode (add single at the end of the kernel command line). It will boot to the admin account and will ask for the root password. At this time you should notice a warning that no IRQ could be assigned for the "PCI interrupt link (LNKD). This is a hint that the guest cannot handle all IRQs it should.

At the moment I don't know if this is a bug in the virtual VBox hardware or a bug in the Linux kernel (I guess the former). The workaround for this problem is to enable the I/O-APIC for your 32-bit guest. Then make sure to install the Guest Additions again (because due to the hanging 'modprobe vboxsf' the previous installation was not finished.

comment:2 by michaln, 8 years ago

This is a bug, but it's a bug in Linux, not in VirtualBox. Introduced most likely in the 4.7 kernel which includes significant ACPI rework. I was able to reproduce the exact same problem with Fedora 25 alpha install CD (4.8.0 kernel) on an old ThinkPad T42p laptop.

The problem appears to be that Linux refuses to share the ACPI interrupt (aka SCI, IRQ 9 in VirtualBox) with PCI interrupts. That is wrong because the ACPI specification explicitly states that the SCI is shareable and matches PCI interrupt semantics.

It is relatively difficult to trigger the problem because it requires a system which a) has no I/O APIC, and b) shares the SCI with PCI interrupts on the same IRQ line. While b) is common, a) is these days getting quite rare.

FWIW, we suspect that the function acpi_irq_get_penalty() in the Linux kernel does the wrong thing because it is fed incorrect data in this particular case.

Also note that the Guest Additions device isn't the only one affected. Other devices may end up at IRQ 9 (xHCI, additional network cards) and will have the same problem. The devices can't signal IRQ 9 at all because Linux does not set up PCI IRQ routing for the affected interrupt.

comment:3 by Frank Mehnert, 8 years ago

Description: modified (diff)

comment:4 by Frank Mehnert, 8 years ago

Cross reference: I've created a Fedora bug here.

comment:5 by Michael Thayer, 8 years ago

Cc: Feline added

Set CC list to: Feline

comment:6 by Frank Mehnert, 8 years ago

Summary: Installation of guest additions in Fedora 24 32 bits guest hangsInstallation of guest additions in Fedora 24 32 bits guest hangs => Linux 4.7 bug
Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use