I got this assert when working on qemu: pci hotplug callback failed so qdev_free was called.
(gdb) where #0 0x00007ffff5fa1905 in raise () from /lib64/libc.so.6 #1 0x00007ffff5fa30e5 in abort () from /lib64/libc.so.6 #2 0x00007ffff7413a7f in g_assertion_message () from /lib64/libglib-2.0.so.0 #3 0x00007ffff7414020 in g_assertion_message_expr () from /lib64/libglib-2.0.so.0 #4 0x00007ffff7e452a9 in object_delete (obj=0x7ffff9124e60) at qom/object.c:375 #5 0x00007ffff7e2f5d4 in qdev_free (dev=0x7ffff9124e60) at /home/mst/scm/qemu/hw/qdev.c:250 #6 qdev_init (dev=0x7ffff9124e60) at /home/mst/scm/qemu/hw/qdev.c:149 #7 0x00007ffff7e2a7fe in qdev_device_add (opts=0x7ffff8b0d3a0) at /home/mst/scm/qemu/hw/qdev-monitor.c:473 #8 0x00007ffff7e06da9 in device_init_func (opts=<value optimized out>, opaque=<value optimized out>) at /home/mst/scm/qemu/vl.c:1754 #9 0x00007ffff7e3737a in qemu_opts_foreach (list=<value optimized out>, func= 0x7ffff7e06d90 <device_init_func>, opaque=0x0, abort_on_failure=<value optimized out>) at qemu-option.c:1048 #10 0x00007ffff7e09cdb in main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at /home/mst/scm/qemu/vl.c:3407 (gdb) frame 6 #6 qdev_init (dev=0x7ffff9124e60) at /home/mst/scm/qemu/hw/qdev.c:149 149 qdev_free(dev); The problems seems to be that pci_qdev_init calls do_pci_unregister_device on hotplug error which will free the device twice? -- MST