From: Juan Quintela <quintela@redhat.com>
To: Ivan Ren <renyime@gmail.com>
Cc: dgilbert@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] migration: multifd_send_thread always post p->sem_sync when error happen
Date: Wed, 11 Sep 2019 13:19:49 +0200 [thread overview]
Message-ID: <8736h3w04q.fsf@trasno.org> (raw)
In-Reply-To: <1567044996-2362-1-git-send-email-ivanren@tencent.com> (Ivan Ren's message of "Thu, 29 Aug 2019 10:16:36 +0800")
Ivan Ren <renyime@gmail.com> wrote:
> From: Ivan Ren <ivanren@tencent.com>
>
> When encounter error, multifd_send_thread should always notify who pay
> attention to it before exit. Otherwise it may block migration_thread
> at multifd_send_sync_main forever.
>
> Error as follow:
> -------------------------------------------------------------------------------
> (gdb) bt
> #0 0x00007f4d669dfa0b in do_futex_wait.constprop.1 () from /lib64/libpthread.so.0
> #1 0x00007f4d669dfa9f in __new_sem_wait_slow.constprop.0 () from /lib64/libpthread.so.0
> #2 0x00007f4d669dfb3b in sem_wait@@GLIBC_2.2.5 () from /lib64/libpthread.so.0
> #3 0x0000562ccf0a5614 in qemu_sem_wait (sem=sem@entry=0x562cd1b698e8) at util/qemu-thread-posix.c:319
> #4 0x0000562ccecb4752 in multifd_send_sync_main (rs=<optimized out>) at /qemu/migration/ram.c:1099
> #5 0x0000562ccecb95f4 in ram_save_iterate (f=0x562cd0ecc000, opaque=<optimized out>) at /qemu/migration/ram.c:3550
> #6 0x0000562ccef43c23 in qemu_savevm_state_iterate (f=0x562cd0ecc000, postcopy=false) at migration/savevm.c:1189
> #7 0x0000562ccef3dcf3 in migration_iteration_run (s=0x562cd09fabf0) at migration/migration.c:3131
> #8 migration_thread (opaque=opaque@entry=0x562cd09fabf0) at migration/migration.c:3258
> #9 0x0000562ccf0a4c26 in qemu_thread_start (args=<optimized out>) at util/qemu-thread-posix.c:502
> #10 0x00007f4d669d9e25 in start_thread () from /lib64/libpthread.so.0
> #11 0x00007f4d6670635d in clone () from /lib64/libc.so.6
> (gdb) f 4
> #4 0x0000562ccecb4752 in multifd_send_sync_main (rs=<optimized out>) at /qemu/migration/ram.c:1099
> 1099 qemu_sem_wait(&p->sem_sync);
> (gdb) list
> 1094 }
> 1095 for (i = 0; i < migrate_multifd_channels(); i++) {
> 1096 MultiFDSendParams *p = &multifd_send_state->params[i];
> 1097
> 1098 trace_multifd_send_sync_main_wait(p->id);
> 1099 qemu_sem_wait(&p->sem_sync);
> 1100 }
> 1101 trace_multifd_send_sync_main(multifd_send_state->packet_num);
> 1102 }
> 1103
> (gdb) p i
> $1 = 0
> (gdb) p multifd_send_state->params[0].pending_job
> $2 = 2 //It means the job before MULTIFD_FLAG_SYNC has already fail
> (gdb) p multifd_send_state->params[0].quit
> $3 = true
>
> Signed-off-by: Ivan Ren <ivanren@tencent.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
next prev parent reply other threads:[~2019-09-11 11:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-29 2:16 [Qemu-devel] [PATCH] migration: multifd_send_thread always post p->sem_sync when error happen Ivan Ren
2019-09-11 11:19 ` Juan Quintela [this message]
2019-09-12 9:53 ` Dr. David Alan Gilbert
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=8736h3w04q.fsf@trasno.org \
--to=quintela@redhat.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=renyime@gmail.com \
/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.