On 02/12/2012 11:31 AM, Michael S. Tsirkin wrote: > On Sun, Feb 12, 2012 at 07:07:43PM +0200, Michael S. Tsirkin wrote: >> 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=, >> opaque=) at /home/mst/scm/qemu/vl.c:1754 >> #9 0x00007ffff7e3737a in qemu_opts_foreach (list=, >> func= >> 0x7ffff7e06d90, opaque=0x0, >> abort_on_failure=) at qemu-option.c:1048 >> #10 0x00007ffff7e09cdb in main (argc=, argv=> optimized out>, >> envp=) 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? > > Here's a reproducer to a similar error in property parsing: > > qemu-system-x86_64 -enable-kvm -m 1G -drive file=/home/mst/rhel6.qcow2 > -netdev user,id=bar -net > nic,netdev=bar,model=e1000,macaddr=52:54:00:12:34:57 -redir > tcp:8022::22 -device virtio-net-pci,netdev=foo,mac=5854:00:12:34:56 > -netdev > tap,id=foo,ifname=msttap0,script=/home/mst/ifup,downscript=no,vhost=on > -vnc :1 -monitor stdio Here's the fix. I need to do some regression testing and then I'll post as a proper top-level patch. Thanks for the report. Regards, Anthony Liguori > > > >> -- >> MST