qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: qemu crashing when attaching an ISO file to a virtio-scsi CD-ROM dev


From: John Snow
Subject: Re: qemu crashing when attaching an ISO file to a virtio-scsi CD-ROM device through libvirt
Date: Wed, 23 Oct 2019 11:34:45 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1


On 10/18/19 5:41 PM, Fernando Casas Schössow wrote:
> Hi,
> 

Hi! Thanks for the report.

> Today while working with two different Windows Server 2012 R2 guests I 
> found that when I try to attach an ISO file to a SCSI CD-ROM device 
> through libvirt (virsh or virt-manager) while the guest is running, 
> qemu crashes and the following message is logged:
> 
> Assertion failed: blk_get_aio_context(d->conf.blk) == s->ctx 
> (/home/buildozer/aports/main/qemu/src/qemu-4.0.0/hw/scsi/virtio-scsi.c: 
> virtio_scsi_ctx_check: 246)
> 
> I can repro this at will. All I have to do is to try to attach an ISO 
> file to the SCSI CDROM while the guest is running.
> The SCSI controller model is virtio-scsi with iothread enabled.
> Please find below all the details about my setup that I considered 
> relevant but I missed something please don't hesitate to let me know:
> 

Looks like we got aio_context management wrong with iothread for the
media change events somewhere. Should be easy enough to fix if we figure
out where the bad assumption is.

> Host arch: x86_64
> Distro: Alpine Linux 3.10.2
> qemu version: 4.0

Do you have the ability to try 4.1, or the latest development head with
debugging symbols enabled?

> Linux kernel version: 4.19.67
> libvirt: 5.5.0
> Emulated SCSI controller: virtio-scsi (with iothread enabled)
> Guest firmware: OVMF-EFI
> Guest OS: Window Server 2012 R2
> Guest virtio drivers version: 171 (current stable)
> 
> qemu command line:
> 
> /usr/bin/qemu-system-x86_64 -name guest=DCHOMENET01,debug-threads=on -S 
> -object 
> secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-78-DCHOMENET01/master-key.aes
>  
> -machine pc-i440fx-4.0,accel=kvm,usb=off,dump-guest-core=on -cpu 
> IvyBridge,ss=on,vmx=off,pcid=on,hypervisor=on,arat=on,tsc_adjust=on,umip=on,xsaveopt=on,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff
>  
> -drive 
> file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd,if=pflash,format=raw,unit=0,readonly=on
>  
> -drive 
> file=/var/lib/libvirt/qemu/nvram/DCHOMENET01_VARS.fd,if=pflash,format=raw,unit=1
>  
> -m 1536 -overcommit mem-lock=off -smp 1,sockets=1,cores=1,threads=1 
> -object iothread,id=iothread1 -uuid 
> f06978ad-2734-44ab-a518-5dfcf71d625e -no-user-config -nodefaults 
> -chardev socket,id=charmonitor,fd=33,server,nowait -mon 
> chardev=charmonitor,id=monitor,mode=control -rtc 
> base=localtime,driftfix=slew -global kvm-pit.lost_tick_policy=delay 
> -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global 
> PIIX4_PM.disable_s4=1 -boot strict=on -device 
> qemu-xhci,id=usb,bus=pci.0,addr=0x4 -device 
> virtio-scsi-pci,iothread=iothread1,id=scsi0,num_queues=1,bus=pci.0,addr=0x5 
> -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 -drive 
> file=/storage/storage-hdd-vms/virtual_machines_hdd/dchomenet01.qcow2,format=qcow2,if=none,id=drive-scsi0-0-0-0,cache=none,discard=unmap,aio=threads
>  
> -device 
> scsi-hd,bus=scsi0.0,channel=0,scsi-id=0,lun=0,device_id=drive-scsi0-0-0-0,drive=drive-scsi0-0-0-0,id=scsi0-0-0-0,bootindex=1,write-cache=on
>  
> -drive if=none,id=drive-scsi0-0-0-1,readonly=on -device 
> scsi-cd,bus=scsi0.0,channel=0,scsi-id=0,lun=1,device_id=drive-scsi0-0-0-1,drive=drive-scsi0-0-0-1,id=scsi0-0-0-1
>  
> -netdev tap,fd=41,id=hostnet0,vhost=on,vhostfd=43 -device 
> virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:99:b5:62,bus=pci.0,addr=0x3
>  
> -chardev 
> socket,id=charserial0,host=127.0.0.1,port=4900,telnet,server,nowait 
> -device isa-serial,chardev=charserial0,id=serial0 -chardev 
> spicevmc,id=charchannel0,name=vdagent -device 
> virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
>  
> -chardev socket,id=charchannel1,fd=45,server,nowait -device 
> virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=org.qemu.guest_agent.0
>  
> -chardev spiceport,id=charchannel2,name=org.spice-space.webdav.0 
> -device 
> virtserialport,bus=virtio-serial0.0,nr=3,chardev=charchannel2,id=channel2,name=org.spice-space.webdav.0
>  
> -device virtio-tablet-pci,id=input2,bus=pci.0,addr=0x7 -spice 
> port=5900,addr=127.0.0.1,disable-ticketing,seamless-migration=on 
> -device 
> qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pci.0,addr=0x2
>  
> -chardev spicevmc,id=charredir0,name=usbredir -device 
> usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev 
> spicevmc,id=charredir1,name=usbredir -device 
> usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device 
> virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8 -sandbox 
> on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny 
> -msg timestamp=on
> 
> I can provide a core dump of the process if needed for debugging and 
> the guest XML as well.
> 

A backtrace is probably a great starting point (from gdb: `thread apply
all bt`.) I don't know exactly what codepath is being exercised when you
"attach an ISO file" through libvirt's interface.

If you don't mind the hassle, trying on the 4.1 (or a development build
would be even more luxurious) and giving a stacktrace would be nice.

> Thanks.
> 
> Fernando
> 
> 

Thanks!
--js




reply via email to

[Prev in Thread] Current Thread [Next in Thread]