All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] QEMU on s390 segfaults with co-routine error
@ 2018-02-16 12:51 Farhan Ali
  0 siblings, 0 replies; only message in thread
From: Farhan Ali @ 2018-02-16 12:51 UTC (permalink / raw)
  To: QEMU Developers, Jeff Cody, open list:virtio-ccw; +Cc: Christian Borntraeger

Hi,

I have noticed a QEMU crash with one of my tests. And the qemu log file 
states the guest crashed with the following error message:

aio_co_schedule: Co-routine was already scheduled in 'aio_co_schedule'


Investigating a little more, it looks like the error message was 
introduced by the following commit:

commit 6133b39f3c36623425a6ede9e89d93175fde15cd
Author: Jeff Cody <jcody@redhat.com>
Date:   Fri Nov 17 22:27:09 2017 -0500

     coroutine: abort if we try to schedule or enter a pending coroutine

     The previous patch fixed a race condition, in which there were
     coroutines being executing doubly, or after coroutine deletion.

     We can detect common scenarios when this happens, and print an error
     message and abort before we corrupt memory / data, or segfault.

     This patch will abort if an attempt to enter a coroutine is made while
     it is currently pending execution, either in a specific AioContext bh,
     or pending execution via a timer.  It will also abort if a coroutine
     is scheduled, before a prior scheduled run has occurred.

     We cannot rely on the existing co->caller check for recursive re-entry
     to catch this, as the coroutine may run and exit with
     COROUTINE_TERMINATE before the scheduled coroutine executes.

     (This is the scenario that was occurring and fixed in the previous
     patch).

     This patch also re-orders the Coroutine struct elements in an 
attempt to
     optimize caching.

     Signed-off-by: Jeff Cody <jcody@redhat.com>
     Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>



Here is the qemu command line:

LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 
QEMU_AUDIO_DRV=none /usr/bin/qemu-kvm -name guest=vm_2,debug-threads=on 
-S -object 
secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-4-vm_2/master-key.aes 
-machine s390-ccw-virtio-2.12,accel=kvm,usb=off,dump-guest-core=off -m 
1024 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -object 
iothread,id=iothread1 -uuid f1359d37-bcfb-439f-a6c2-79bf9859e701 
-display none -no-user-config -nodefaults -chardev 
socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-4-vm_2/monitor.sock,server,nowait 
-mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc 
-no-shutdown -boot strict=on -drive 
file=/dev/mapper/360050763998b0883980000001500001c,format=raw,if=none,id=drive-virtio-disk0,cache=none,aio=native 
-device 
virtio-blk-ccw,iothread=iothread1,scsi=off,devno=fe.0.0001,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 
-drive 
file=/dev/mapper/360050763998b0883980000001b000022,format=raw,if=none,id=drive-virtio-disk1,cache=none,aio=native 
-device 
virtio-blk-ccw,iothread=iothread1,scsi=off,devno=fe.0.0002,drive=drive-virtio-disk1,id=virtio-disk1 
-netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=29 -device 
virtio-net-ccw,netdev=hostnet0,id=net0,mac=02:75:b0:55:2a:b1,devno=fe.0.0000 
-chardev pty,id=charconsole0 -device 
sclpconsole,chardev=charconsole0,id=console0 -device 
virtio-balloon-ccw,id=balloon0,devno=fe.3.ffba -msg timestamp=on


I remember some time ago we had similar segfaults with coroutines and 
iothreads. I have only hit this error once, and I have not been able to 
reproduce it consistently.


Thank you
Farhan

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2018-02-16 12:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-16 12:51 [Qemu-devel] QEMU on s390 segfaults with co-routine error Farhan Ali

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.