All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonggang Luo <luoyonggang@gmail.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Ed Maste <emaste@freebsd.org>,
	Michael Roth <mdroth@linux.vnet.ibm.com>,
	qemu-block@nongnu.org, Stefan Weil <sw@weilnetz.de>,
	Xie Changlong <xiechanglong.d@gmail.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Markus Armbruster <armbru@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	Yonggang Luo <luoyonggang@gmail.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Wen Congyang <wencongyang2@huawei.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Li-Wen Hsu <lwhsu@freebsd.org>, Peter Lieven <pl@kamp.de>
Subject: [PATCH v7 20/25] tests: fixes aio-win32 about aio_remove_fd_handler, get it consistence with aio-posix.c
Date: Thu, 10 Sep 2020 18:37:20 +0800	[thread overview]
Message-ID: <20200910103725.1439-4-luoyonggang@gmail.com> (raw)
In-Reply-To: <20200910103725.1439-1-luoyonggang@gmail.com>

This is a fixes for
(C:\work\xemu\qemu\build\tests\test-aio-multithread.exe:19100): GLib-CRITICAL **: 23:03:24.965: g_source_remove_poll: assertion '!SOURCE_DESTROYED (source)' failed
ERROR test-aio-multithread - Bail out! GLib-FATAL-CRITICAL: g_source_remove_poll: assertion '!SOURCE_DESTROYED (source)' failed

(C:\work\xemu\qemu\build\tests\test-bdrv-drain.exe:21036): GLib-CRITICAL **: 23:03:29.861: g_source_remove_poll: assertion '!SOURCE_DESTROYED (source)' failed
ERROR test-bdrv-drain - Bail out! GLib-FATAL-CRITICAL: g_source_remove_poll: assertion '!SOURCE_DESTROYED (source)' failed

And the idea comes from https://patchwork.kernel.org/patch/9975239/

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 util/aio-win32.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/util/aio-win32.c b/util/aio-win32.c
index 953c56ab48..9899546a8a 100644
--- a/util/aio-win32.c
+++ b/util/aio-win32.c
@@ -37,6 +37,15 @@ struct AioHandler {
 
 static void aio_remove_fd_handler(AioContext *ctx, AioHandler *node)
 {
+    /* If the GSource is in the process of being destroyed then
+     * g_source_remove_poll() causes an assertion failure.  Skip
+     * removal in that case, because glib cleans up its state during
+     * destruction anyway.
+     */
+    if (!g_source_is_destroyed(&ctx->source)) {
+        g_source_remove_poll(&ctx->source, &node->pfd);
+    }
+
     /* If aio_poll is in progress, just mark the node as deleted */
     if (qemu_lockcnt_count(&ctx->list_lock)) {
         node->deleted = 1;
@@ -139,8 +148,6 @@ void aio_set_event_notifier(AioContext *ctx,
     /* Are we deleting the fd handler? */
     if (!io_notify) {
         if (node) {
-            g_source_remove_poll(&ctx->source, &node->pfd);
-
             aio_remove_fd_handler(ctx, node);
         }
     } else {
-- 
2.28.0.windows.1



  parent reply	other threads:[~2020-09-10 10:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-10 10:37 [PATCH v7 17/25] cirrus: Building freebsd in a single short Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 18/25] tests: Convert g_free to g_autofree macro in test-logging.c Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 19/25] tests: Fixes test-io-channel-socket.c tests under msys2/mingw Yonggang Luo
2020-09-10 10:37 ` Yonggang Luo [this message]
2020-09-10 10:37 ` [PATCH v7 21/25] tests: Fixes test-io-channel-file by mask only owner file state mask bits Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 22/25] tests: fix test-util-sockets.c Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 23/25] tests: Fixes test-qdev-global-props.c Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 24/25] rcu: fixes test-logging.c by call drain_call_rcu before rmdir_full Yonggang Luo
2020-09-10 10:37 ` [PATCH v7 25/25] ci: Enable msys2 ci in cirrus Yonggang Luo
2020-09-10 14:18 ` [PATCH v7 17/25] cirrus: Building freebsd in a single short Thomas Huth
2020-09-10 17:30   ` 罗勇刚(Yonggang Luo)
2020-09-10 18:00   ` Daniel P. Berrangé

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=20200910103725.1439-4-luoyonggang@gmail.com \
    --to=luoyonggang@gmail.com \
    --cc=armbru@redhat.com \
    --cc=emaste@freebsd.org \
    --cc=kraxel@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lwhsu@freebsd.org \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=sw@weilnetz.de \
    --cc=wencongyang2@huawei.com \
    --cc=xiechanglong.d@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.