From: Juan Quintela <quintela@redhat.com>
To: Lidong Chen <jemmy858585@gmail.com>
Cc: dgilbert@redhat.com, berrange@redhat.com, qemu-devel@nongnu.org,
galsha@mellanox.com, aviadye@mellanox.com, adido@mellanox.com,
Lidong Chen <lidongchen@tencent.com>
Subject: Re: [Qemu-devel] [PATCH 2/2] migration: invoke qio_channel_yield only when qemu_in_coroutine()
Date: Tue, 08 May 2018 14:36:30 +0200 [thread overview]
Message-ID: <877eoe8gtt.fsf@secure.laptop> (raw)
In-Reply-To: <1525701137-9384-2-git-send-email-lidongchen@tencent.com> (Lidong Chen's message of "Mon, 7 May 2018 21:52:17 +0800")
Lidong Chen <jemmy858585@gmail.com> wrote:
> when qio_channel_read return QIO_CHANNEL_ERR_BLOCK, the source qemu crash.
>
> The backtrace is:
> (gdb) bt
> #0 0x00007fb20aba91d7 in raise () from /lib64/libc.so.6
> #1 0x00007fb20abaa8c8 in abort () from /lib64/libc.so.6
> #2 0x00007fb20aba2146 in __assert_fail_base () from /lib64/libc.so.6
> #3 0x00007fb20aba21f2 in __assert_fail () from /lib64/libc.so.6
> #4 0x00000000008dba2d in qio_channel_yield (ioc=0x22f9e20, condition=G_IO_IN) at io/channel.c:460
> #5 0x00000000007a870b in channel_get_buffer (opaque=0x22f9e20, buf=0x3d54038 "", pos=0, size=32768)
> at migration/qemu-file-channel.c:83
> #6 0x00000000007a70f6 in qemu_fill_buffer (f=0x3d54000) at migration/qemu-file.c:299
> #7 0x00000000007a79d0 in qemu_peek_byte (f=0x3d54000, offset=0) at migration/qemu-file.c:562
> #8 0x00000000007a7a22 in qemu_get_byte (f=0x3d54000) at migration/qemu-file.c:575
> #9 0x00000000007a7c46 in qemu_get_be16 (f=0x3d54000) at migration/qemu-file.c:647
> #10 0x0000000000796db7 in source_return_path_thread (opaque=0x2242280) at migration/migration.c:1794
> #11 0x00000000009428fa in qemu_thread_start (args=0x3e58420) at util/qemu-thread-posix.c:504
> #12 0x00007fb20af3ddc5 in start_thread () from /lib64/libpthread.so.0
> #13 0x00007fb20ac6b74d in clone () from /lib64/libc.so.6
>
> This patch fixed by invoke qio_channel_yield only when qemu_in_coroutine().
>
> Signed-off-by: Lidong Chen <lidongchen@tencent.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
queued
> - qio_channel_wait(ioc, G_IO_OUT);
> + if (qemu_in_coroutine()) {
> + qio_channel_yield(ioc, G_IO_OUT);
> + } else {
> + qio_channel_wait(ioc, G_IO_OUT);
> + }
Dan, once that I am here, shouldn't this code be inside
qio_channel_wait()? Or have a function that does it?
qio_channel_readv_all_eof() and qio_channel_writev_all() already have to use it.
Just wondering.
next prev parent reply other threads:[~2018-05-08 12:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-07 13:52 [Qemu-devel] [PATCH 1/2] migration: implement io_set_aio_fd_handler function for RDMA QIOChannel Lidong Chen
2018-05-07 13:52 ` [Qemu-devel] [PATCH 2/2] migration: invoke qio_channel_yield only when qemu_in_coroutine() Lidong Chen
2018-05-08 12:36 ` Juan Quintela [this message]
2018-05-08 12:34 ` [Qemu-devel] [PATCH 1/2] migration: implement io_set_aio_fd_handler function for RDMA QIOChannel Juan Quintela
2018-05-08 17:09 ` Juan Quintela
2018-05-08 17:10 ` Dr. David Alan Gilbert
2018-05-09 4:11 ` 858585 jemmy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877eoe8gtt.fsf@secure.laptop \
--to=quintela@redhat.com \
--cc=adido@mellanox.com \
--cc=aviadye@mellanox.com \
--cc=berrange@redhat.com \
--cc=dgilbert@redhat.com \
--cc=galsha@mellanox.com \
--cc=jemmy858585@gmail.com \
--cc=lidongchen@tencent.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.