> Am 27.08.2015 um 14:34 schrieb Jeff Cody <jc...@redhat.com>: > > On Thu, Aug 27, 2015 at 11:26:13AM +0200, Christian Rößner wrote: >> >>> Am 26.08.2015 um 15:25 schrieb Jeff Cody <jc...@redhat.com>: >>> >>> On Wed, Aug 26, 2015 at 10:08:26AM +0200, Christian Rößner wrote: >>>> >>>>> Am 25.08.2015 um 08:02 schrieb Christian Rößner <c...@roessner.co>: >>>>> >>>>> Hello, >>>>> >>>>> I wrote this mail to the qemu-discuss mailing list, but today I am >>>>> unsure, if I chose the right list. So I copy and paste this mail here in >>>>> hope someone can respond :-) >>>>> >>>>> I have reproducable problems with some code in qemu-coroutine.c: >>>>> >>>>> >>>>> void qemu_coroutine_enter(Coroutine *co, void *opaque) >>>>> { >>>>> Coroutine *self = qemu_coroutine_self(); >>>>> CoroutineAction ret; >>>>> >>>>> trace_qemu_coroutine_enter(self, co, opaque); >>>>> >>>>> if (co->caller) { >>>>> fprintf(stderr, "Co-routine re-entered recursively\n"); >>>>> abort(); <————————— This one triggers 4 or 5 out of ten tests to >>>>> use the blockcommit feature >>>>> } >>>> >>>> Caught Co-routine SIGABRT while a blockcommit operation was running. >>>> >>>> Recompiled with debugging symbols and I connected gdb to the process: >>>> >>>> (gdb) bt >>>> #0 0x00007f4b6e6ccb8e in raise () from /lib64/libc.so.6 >>>> #1 0x00007f4b6e6ce391 in abort () from /lib64/libc.so.6 >>>> #2 0x0000555a316a8c39 in qemu_coroutine_enter (co=0x555a34651a50, >>>> opaque=0x0) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/qemu-coroutine.c:111 >>>> #3 0x0000555a316a8eda in qemu_co_queue_run_restart >>>> (co=co@entry=0x555a33d271b0) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/qemu-coroutine-lock.c:59 >>>> #4 0x0000555a316a8b53 in qemu_coroutine_enter (co=0x555a33d271b0, >>>> opaque=<optimized out>) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/qemu-coroutine.c:118 >>>> #5 0x0000555a316e3adf in bdrv_co_aio_rw_vector >>>> (bs=bs@entry=0x555a336a6be0, >>>> sector_num=sector_num@entry=113551488, qiov=qiov@entry=0x555a3367d2c8, >>>> nb_sectors=nb_sectors@entry=15360, flags=flags@entry=(unknown: 0), >>>> cb=cb@entry=0x555a316e1fe0 <mirror_read_complete>, >>>> opaque=0x555a3367d2c0, is_write=is_write@entry=false) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/block/io.c:2142 >>>> #6 0x0000555a316e4b1e in bdrv_aio_readv (bs=bs@entry=0x555a336a6be0, >>>> sector_num=sector_num@entry=113551488, qiov=qiov@entry=0x555a3367d2c8, >>>> nb_sectors=nb_sectors@entry=15360, cb=cb@entry=0x555a316e1fe0 >>>> <mirror_read_complete>, >>>> opaque=opaque@entry=0x555a3367d2c0) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/block/io.c:1744 >>>> #7 0x0000555a316e2ccf in mirror_iteration (s=0x555a34a0c250) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/block/mirror.c:302 >>>> #8 mirror_run (opaque=0x555a34a0c250) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/block/mirror.c:512 >>>> #9 0x0000555a316a9a5a in coroutine_trampoline (i0=<optimized out>, >>>> i1=<optimized out>) >>>> at >>>> /var/tmp/portage/app-emulation/qemu-2.4.0/work/qemu-2.4.0/coroutine-ucontext.c:80 >>>> #10 0x00007f4b6e6df4a0 in ?? () from /lib64/libc.so.6 >>>> #11 0x00007ffe67b71840 in ?? () >>>> #12 0x0000000000000000 in ?? () >>>> (gdb) >>>> >>>> Please, could someone reply to me :-) >>>> >>>> Thanks >>>> >>>> Christian >>> >>> Hi Christian, >>> >>> I think you may be running into a bug that is fixed by a recent patch >>> (after v2.4.0): >>> >>> commit e424aff5f307227b1c2512bbb8ece891bb895cef >>> Author: Kevin Wolf <kw...@redhat.com> >>> Date: Thu Aug 13 10:41:50 2015 +0200 >>> >>> mirror: Fix coroutine reentrance >>> >>> >>> Could you retry with qemu.git/master, and see if that fixes the issue >>> you are seeing? >> >> Until now, everything looks perfectly. No issues. Backup is running smoothly. >> >> Thanks very much. If nothing changes until tonight, I am going to close the >> bug report. >> > > Christian, > > Great to hear, thanks for the follow-up.
Just a final result: As I use libvirt with qemu, I used the blockcommit feature with libvirt. Running blockcommit directly with --wait --active --pivot, it may happen that the pivot fails, because the blockcommit wasn't already ready to pivot. But I do not know, if this is libvirt related or qemu. Splitting it into blockcommit and blockjob, everything works like a charm. So I have a working solution now. Thanks very much for your help and feedback. Christian
smime.p7s
Description: S/MIME cryptographic signature