qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Lukas Straub <lukasstraub2@web.de>
To: Lei Rao <lei.rao@intel.com>
Cc: like.xu.linux@gmail.com, zhang.zhanghailiang@huawei.com,
	lizhijian@cn.fujitsu.com, quintela@redhat.com,
	jasowang@redhat.com, dgilbert@redhat.com,
	Like Xu <like.xu@linux.intel.com>,
	qemu-devel@nongnu.org, chen.zhang@intel.com
Subject: Re: [PATCH 4/7] colo: fixed 'Segmentation fault' when the simplex mode PVM poweroff
Date: Sat, 3 Jul 2021 22:36:20 +0200	[thread overview]
Message-ID: <20210703223620.7dbf323a@gecko.fritz.box> (raw)
In-Reply-To: <1623898035-18533-5-git-send-email-lei.rao@intel.com>

[-- Attachment #1: Type: text/plain, Size: 2518 bytes --]

On Thu, 17 Jun 2021 10:47:12 +0800
Lei Rao <lei.rao@intel.com> wrote:

> From: "Rao, Lei" <lei.rao@intel.com>
> 
> When a PVM completed its SVM failover steps and begins to run in
> the simplex mode, QEMU would encounter a 'Segmentation fault' if
> the guest poweroff with the following calltrace:
> 
> Program received signal SIGSEGV, Segmentation fault.
> 
> This is because primary_vm_do_failover() would call "qemu_file_shutdown
> (s->rp_state.from_dst_file);" and later the migration_shutdown() would
> do it again. So, we should set the s->rp_state.from_dst_file to NULL.

Hello,
Please provide a backtrace to such bugfixes. It helps the reviewers to
better understand the bug and the fix and it helps yourself to check if
it is actually correct. I suggest you to enable coredumps in your test
(or even production) system, so for every crash you definitely have a
backtrace.

> Signed-off-by: Like Xu <like.xu@linux.intel.com>
> Signed-off-by: Lei Rao <lei.rao@intel.com>
> ---
>  migration/colo.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/migration/colo.c b/migration/colo.c
> index 616dc00..c25e488 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -156,14 +156,15 @@ static void primary_vm_do_failover(void)
>  
>      /*
>       * Wake up COLO thread which may blocked in recv() or send(),
> -     * The s->rp_state.from_dst_file and s->to_dst_file may use the
> -     * same fd, but we still shutdown the fd for twice, it is harmless.
> +     * The s->to_dst_file may use the same fd, but we still shutdown
> +     * the fd for twice, it is harmless.
>       */

This change to the comment is incorrect. Shutting down a file multiple
times is safe and not a bug in it self. If it leads to a crash anyway,
that points to a bug in the qemu_file_shutdown() function or similar.

>      if (s->to_dst_file) {
>          qemu_file_shutdown(s->to_dst_file);
>      }
>      if (s->rp_state.from_dst_file) {
>          qemu_file_shutdown(s->rp_state.from_dst_file);
> +        s->rp_state.from_dst_file = NULL;
>      }

This is incorrect, as the file won't be closed after this and is
leaked. And indeed, when applying the patch to master, qemu crashes
when triggering failover on the primary, due to the leak:

qemu-system-x86_64: ../util/yank.c:107: yank_unregister_instance: Assertion `QLIST_EMPTY(&entry->yankfns)' failed.

>      old_state = failover_set_state(FAILOVER_STATUS_ACTIVE,



-- 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2021-07-03 20:38 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17  2:47 [PATCH 0/7] Fixed some bugs and optimized some codes for COLO Lei Rao
2021-06-17  2:47 ` [PATCH 1/7] Some minor optimizations " Lei Rao
2021-06-29 17:58   ` Dr. David Alan Gilbert
2021-06-17  2:47 ` [PATCH 2/7] Fixed qemu crash when guest power off in COLO mode Lei Rao
2021-06-17  2:47 ` [PATCH 3/7] Fixed SVM hang when do failover before PVM crash Lei Rao
2021-06-17  5:50   ` lizhijian
2021-06-17  2:47 ` [PATCH 4/7] colo: fixed 'Segmentation fault' when the simplex mode PVM poweroff Lei Rao
2021-07-03 20:36   ` Lukas Straub [this message]
2021-07-05  2:54     ` Rao, Lei
2021-07-05  9:06       ` Rao, Lei
2021-06-17  2:47 ` [PATCH 5/7] Removed the qemu_fclose() in colo_process_incoming_thread Lei Rao
2021-06-17  2:47 ` [PATCH 6/7] Changed the last-mode to none of first start COLO Lei Rao
2021-06-17  2:47 ` [PATCH 7/7] Optimized the function of fill_connection_key Lei Rao
2021-07-28  6:25   ` Zhang, Chen

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=20210703223620.7dbf323a@gecko.fritz.box \
    --to=lukasstraub2@web.de \
    --cc=chen.zhang@intel.com \
    --cc=dgilbert@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=lei.rao@intel.com \
    --cc=like.xu.linux@gmail.com \
    --cc=like.xu@linux.intel.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=zhang.zhanghailiang@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).