> 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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to