From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:44270) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RwdH2-0001cO-9L for qemu-devel@nongnu.org; Sun, 12 Feb 2012 12:31:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RwdH1-0003mE-2h for qemu-devel@nongnu.org; Sun, 12 Feb 2012 12:31:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44913) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RwdH0-0003m8-OQ for qemu-devel@nongnu.org; Sun, 12 Feb 2012 12:31:39 -0500 Date: Sun, 12 Feb 2012 19:31:41 +0200 From: "Michael S. Tsirkin" Message-ID: <20120212173140.GB3375@redhat.com> References: <20120212170743.GA3375@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20120212170743.GA3375@redhat.com> Subject: Re: [Qemu-devel] weird qdev error List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori , qemu-devel@nongnu.org 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 > -- > MST