Bug 1360601

Summary: [Q35] qemu core dump when boot up with 24 switches
Product: Red Hat Enterprise Linux 7 Reporter: jingzhao <jinzhao>
Component: qemu-kvm-rhevAssignee: Marcel Apfelbaum <marcel>
Status: CLOSED DUPLICATE QA Contact: jingzhao <jinzhao>
Severity: high Docs Contact:
Priority: high    
Version: 7.3CC: chayang, dgilbert, juzhang, knoel, virt-maint, yduan, yiwei
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-08-01 09:49:22 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description jingzhao 2016-07-27 06:44:22 UTC
Description of problem:
qemu core dump when boot up with 24 switches

Version-Release number of selected component (if applicable):
qemu-kvm-tools-rhev-2.6.0-15.el7.x86_64
kernel-3.10.0-478.el7.x86_64

How reproducible:
3/3

Steps to Reproduce:
1.Boot up guest with following cli
sh switch-layer.sh 23
[root@intel-3323-24-1 home]# cat switch-layer.sh 
#!/bin/sh

MACHINE=q35
SMP=4,cores=2,threads=2,sockets=1
MEM=2G
GUEST_IMG=/home/q35.qcow2
IMG_FORMAT=qcow2

CLI="/usr/libexec/qemu-kvm -enable-kvm -M $MACHINE -cpu SandyBridge -smp $SMP -m $MEM -name vm1 -drive file=$GUEST_IMG,if=none,id=guest-img,format=$IMG_FORMAT,werror=stop,rerror=stop -device ide-hd,drive=guest-img,bus=ide.0,unit=0,id=os-disk,bootindex=0 -spice port=5931,disable-ticketing -vga qxl -monitor stdio -serial unix:/tmp/console,server,nowait -qmp tcp:0:6666,server,nowait -chardev file,path=/home/seabios.log,id=seabios -device isa-debugcon,chardev=seabios,iobase=0x402 -boot menu=on,reboot-timeout=8,strict=on -device ioh3420,bus=pcie.0,id=root.0,slot=3 -device x3130-upstream,bus=root.0,id=upstream -device xio3130-downstream,bus=upstream,id=downstream0,chassis=1"
while [ ${i:=0} -lt ${1:-0} ]
do
    dstreamId=$((i+1))
    ustreamId=$((i+1))
    chassisId=$((dstreamId+1))
    blkDiskId=$((i))


    CLI="$CLI -device x3130-upstream,bus=downstream$i,id=upstream$ustreamId"    
    CLI="$CLI -device xio3130-downstream,bus=upstream$ustreamId,id=downstream$dstreamId,chassis=$chassisId"
    i=$((i+1))
done
   CLI="$CLI -device virtio-scsi-pci,bus=downstream$dstreamId,id=scsi3,disable-legacy=on,disable-modern=off -drive file=/home/layerblock.qcow2,if=none,id=drive-virtio-disk6,format=qcow2,cache=none,werror=stop,rerror=stop -device scsi-hd,bus=scsi3.0,drive=drive-virtio-disk6,id=virtio-disk6"

$CLI



Actual results:
qemu core dump 
Following is the core dump info

#0  0x00007f08050fd1d7 in raise () from /lib64/libc.so.6
#1  0x00007f08050fe8c8 in abort () from /lib64/libc.so.6
#2  0x00007f08050f6146 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f08050f61f2 in __assert_fail () from /lib64/libc.so.6
#4  0x00007f0810dc171d in vmstate_register_with_alias_id (dev=dev@entry=0x7f081ae92d80, instance_id=<optimized out>, 
    instance_id@entry=-1, vmsd=0x7f08114d6a60 <vmstate_scsi_disk_state>, opaque=opaque@entry=0x7f081ae92d80, 
    alias_id=alias_id@entry=-1, required_for_version=required_for_version@entry=0)
    at /usr/src/debug/qemu-2.6.0/migration/savevm.c:622
#5  0x00007f0810eb8d9a in device_set_realized (obj=<optimized out>, value=<optimized out>, errp=0x7ffee07bd968)
    at hw/core/qdev.c:1085
#6  0x00007f0810f972ce in property_set_bool (obj=0x7f081ae92d80, v=<optimized out>, name=<optimized out>, 
    opaque=0x7f081aa5f800, errp=0x7ffee07bd968) at qom/object.c:1853
#7  0x00007f0810f9af27 in object_property_set_qobject (obj=0x7f081ae92d80, value=<optimized out>, 
    name=0x7f08110923ad "realized", errp=0x7ffee07bd968) at qom/qom-qobject.c:26
#8  0x00007f0810f98da0 in object_property_set_bool (obj=0x7f081ae92d80, value=<optimized out>, 
    name=0x7f08110923ad "realized", errp=0x7ffee07bd968) at qom/object.c:1150
#9  0x00007f0810e69b3c in qdev_device_add (opts=0x7f0813b27450, errp=errp@entry=0x7ffee07bda40) at qdev-monitor.c:617
#10 0x00007f0810e73987 in device_init_func (opaque=<optimized out>, opts=<optimized out>, errp=<optimized out>)
    at vl.c:2362
#11 0x00007f0811041e6a in qemu_opts_foreach (list=<optimized out>, 
    func=func@entry=0x7f0810e73960 <device_init_func>, opaque=opaque@entry=0x0, errp=errp@entry=0x0)
    at util/qemu-option.c:1116
#12 0x00007f0810d68b30 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at vl.c:4549


Expected results:
qemu run successfully

Additional info:

qemu didn't core dump when boot up guest with 24 switches which didn't attach the device

Such as the following cli
# sh switch-layer.sh 23

#!/bin/sh

MACHINE=q35
SMP=4,cores=2,threads=2,sockets=1
MEM=2G
GUEST_IMG=/home/q35.qcow2
IMG_FORMAT=qcow2

CLI="/usr/libexec/qemu-kvm -enable-kvm -M $MACHINE -cpu SandyBridge -smp $SMP -m $MEM -name vm1 -drive file=$GUEST_IMG,if=none,id=guest-img,format=$IMG_FORMAT,werror=stop,rerror=stop -device ide-hd,drive=guest-img,bus=ide.0,unit=0,id=os-disk,bootindex=0 -spice port=5931,disable-ticketing -vga qxl -monitor stdio -serial unix:/tmp/console,server,nowait -qmp tcp:0:6666,server,nowait -chardev file,path=/home/seabios.log,id=seabios -device isa-debugcon,chardev=seabios,iobase=0x402 -boot menu=on,reboot-timeout=8,strict=on -device ioh3420,bus=pcie.0,id=root.0,slot=3 -device x3130-upstream,bus=root.0,id=upstream -device xio3130-downstream,bus=upstream,id=downstream0,chassis=1"
while [ ${i:=0} -lt ${1:-0} ]
do
    dstreamId=$((i+1))
    ustreamId=$((i+1))
    chassisId=$((dstreamId+1))
    blkDiskId=$((i))


    CLI="$CLI -device x3130-upstream,bus=downstream$i,id=upstream$ustreamId"    
    CLI="$CLI -device xio3130-downstream,bus=upstream$ustreamId,id=downstream$dstreamId,chassis=$chassisId"
    i=$((i+1))
done

$CLI

Comment 2 Dr. David Alan Gilbert 2016-08-01 09:49:22 UTC

*** This bug has been marked as a duplicate of bug 1342434 ***