After some debugging we found what was causing of the assert. In our configuration we have
two kernels to boot, one is a pv-linux for Xen dom0 and another just a normal linux kernel.
We have libvirt built with both Xen and vbox support. When running with Xen, the libxl
driver is used so it ends calling libxenlight who doesn't want any SIGCHLD handler set.
Normally this is the case but, since we have vbox support in libvirt the vbox driver loads
some of the vbox libs and one of them sets a SIGCHLD handler. When libxenlight checks
if there is any handler for SIGCHLD it finds that one and fails.
Here is the backtrace from when vbox is setting the handler:
(gdb) bt
#0 0x00007ffff71d8250 in sigaction () from /lib64/libpthread.so.0
#1 0x00007fffedbf3716 in ?? () from /usr/lib64/virtualbox/VBoxRT.so
#2 0x00007fffedbf3960 in ?? () from /usr/lib64/virtualbox/VBoxRT.so
#3 0x00007fffedeea485 in VBoxGetCAPIFunctions () from /usr/lib64/virtualbox/VBoxXPCOMC.so
#4 0x00007fffee37d7ca in ?? () from /usr/lib64/libvirt/connection-driver/libvirt_driver_vbox_network.so
#5 0x00007fffee37d995 in VBoxCGlueInit () from
/usr/lib64/libvirt/connection-driver/libvirt_driver_vbox_network.so
#6 0x00007fffee321e7b in vboxNetworkRegister ()
from /usr/lib64/libvirt/connection-driver/libvirt_driver_vbox_network.so
#7 0x00007ffff755bbe8 in virDriverLoadModule () from /usr/lib64/libvirt.so.0
#8 0x0000555555568714 in ?? ()
#9 0x000055555556ab86 in ?? ()
#10 0x00007ffff6e54aa5 in __libc_start_main () from /lib64/libc.so.6
#11 0x0000555555567f59 in ?? ()
After building libvirt without vbox support the assert disappeared.
On Fri, Jan 23, 2015 at 5:14 AM, Michal Privoznik <mprivozn@xxxxxxxxxx> wrote:
On 22.01.2015 17:49, CloudPatch Staff wrote:
> We're hitting an assert whenever we try to create an HVM instance under
> Xen via libvirtd.
>
> System is running on Gentoo, package information as follows:
>
> app-emulation/xen-4.5.0 USE="api debug flask hvm pam pygrub python qemu
> screen"
> app-emulation/xen-tools-4.5.0 USE="api debug flask hvm pam pygrub python
> qemu screen"
> app-emulation/libvirt-1.2.11-r2:0/1.2.11 USE="caps libvirtd lvm macvtap
> nls qemu udev vepa virtualbox xen"
>
> The following commands are run in parallel:
>
> vmmachine ~ # libvirtd --listen
> 2015-01-22 16:33:13.596+0000: 2620: info : libvirt version: 1.2.11
> 2015-01-22 16:33:13.596+0000: 2620: error : udevGetDMIData:1607 : Failed
> to get udev device for syspath '/sys/devices/virtual/dmi/id' or
> '/sys/class/dmi/id'
> libvirtd: libxl_fork.c:350: sigchld_installhandler_core: Assertion
> `((void)"application must negotiate with libxl about SIGCHLD",
> !(sigchld_saved_action.sa_flags & 4) &&
> (sigchld_saved_action.__sigaction_handler.sa_handler ==
> ((__sighandler_t) 0) ||
> sigchld_saved_action.__sigaction_handler.sa_handler == ((__sighandler_t)
> 1)))' failed.
> Aborted
Interesting. Can you attach a debugger so we can see stacktrace?
Michal
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list