public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Kalev Lember <klember@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/glib2] cve-2026-58016-f44: gmain: Partial revert of recent wakeup changes
Date: Tue, 11 Aug 2026 10:36:29 GMT	[thread overview]
Message-ID: <178644458968.1.4979663822743867563.rpms-glib2-087ef3ba0f76@fedoraproject.org> (raw)

            A new commit has been pushed.

            Repo   : rpms/glib2
            Branch : cve-2026-58016-f44
            Commit : 087ef3ba0f761075383df46eae90e76cf7e3fea4
            Author : Kalev Lember <klember@redhat.com>
            Date   : 2018-01-18T12:47:19+01:00
            Stats  : +114/-1 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/glib2/c/087ef3ba0f761075383df46eae90e76cf7e3fea4?branch=cve-2026-58016-f44

            Log:
            gmain: Partial revert of recent wakeup changes

https://bugzilla.gnome.org/show_bug.cgi?id=761102

---
diff --git a/0001-gmain-Partial-revert-of-recent-wakeup-changes-to-gma.patch b/0001-gmain-Partial-revert-of-recent-wakeup-changes-to-gma.patch
new file mode 100644
index 0000000..796e8df
--- /dev/null
+++ b/0001-gmain-Partial-revert-of-recent-wakeup-changes-to-gma.patch
@@ -0,0 +1,106 @@
+From 94b38beff1347ec4a733199f7a7abdacaa958678 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <withnall@endlessm.com>
+Date: Wed, 17 Jan 2018 11:38:50 +0000
+Subject: [PATCH] gmain: Partial revert of recent wakeup changes to gmain.c
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This reverts the following commits (but keeps the other recent changes
+to gmain.c):
+ • e4ee3079c Do not wake up main loop if change is from same thread
+ • 208702404 main: Create a helper function for "owner wakeup" optimization
+ • 0c0469b56 gmain: Signal wakeups if context has never been acquired as well
+ • 9ba95e25b gmain: only signal GWakeup right before or during a blocking poll
+
+Some combination of them is causing problems with LibreOffice and/or
+WebKit, and the safest thing to do at the moment is revert them all
+until we work out what’s going on. The previous revert (4976e8109) was
+not sufficient (it fixed WebKit, but re-broken LibreOffice).
+
+By reverting, we gain some spurious wakeups, but avoid dropping
+necessary wakeups, which is presumably what’s causing problems in the
+other modules.
+
+Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+https://bugzilla.gnome.org/show_bug.cgi?id=761102
+---
+ glib/gmain.c | 33 +++++----------------------------
+ 1 file changed, 5 insertions(+), 28 deletions(-)
+
+diff --git a/glib/gmain.c b/glib/gmain.c
+index 8ca54de3a45b..67102cdf75d0 100644
+--- a/glib/gmain.c
++++ b/glib/gmain.c
+@@ -1118,29 +1118,6 @@ source_remove_from_context (GSource      *source,
+     }
+ }
+ 
+-/* See https://bugzilla.gnome.org/show_bug.cgi?id=761102 for
+- * the introduction of this.
+- *
+- * The main optimization is to avoid waking up the main
+- * context if a change is made by the current owner.
+- */
+-static void
+-conditional_wakeup (GMainContext *context)
+-{
+-  /* We want to signal wakeups in two cases:
+-   *  1 When the context is owned by another thread
+-   *  2 When the context owner is NULL (two subcases)
+-   *   2a Possible if the context has never been acquired
+-   *   2b Or if the context has no current owner
+-   *
+-   * At least case 2a) is necessary to ensure backwards compatibility with
+-   * qemu's use of GMainContext.
+-   * https://bugzilla.gnome.org/show_bug.cgi?id=761102#c14
+-   */
+-  if (context->owner != G_THREAD_SELF)
+-    g_wakeup_signal (context->wakeup);
+-}
+-
+ static guint
+ g_source_attach_unlocked (GSource      *source,
+                           GMainContext *context,
+@@ -1187,8 +1164,8 @@ g_source_attach_unlocked (GSource      *source,
+   /* If another thread has acquired the context, wake it up since it
+    * might be in poll() right now.
+    */
+-  if (do_wakeup)
+-    conditional_wakeup (context);
++  if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
++    g_wakeup_signal (context->wakeup);
+ 
+   return source->source_id;
+ }
+@@ -1878,7 +1855,7 @@ g_source_set_ready_time (GSource *source,
+     {
+       /* Quite likely that we need to change the timeout on the poll */
+       if (!SOURCE_BLOCKED (source))
+-        conditional_wakeup (context);
++        g_wakeup_signal (context->wakeup);
+       UNLOCK_CONTEXT (context);
+     }
+ }
+@@ -4318,7 +4295,7 @@ g_main_context_add_poll_unlocked (GMainContext *context,
+   context->poll_changed = TRUE;
+ 
+   /* Now wake up the main loop if it is waiting in the poll() */
+-  conditional_wakeup (context);
++  g_wakeup_signal (context->wakeup);
+ }
+ 
+ /**
+@@ -4378,7 +4355,7 @@ g_main_context_remove_poll_unlocked (GMainContext *context,
+   context->poll_changed = TRUE;
+ 
+   /* Now wake up the main loop if it is waiting in the poll() */
+-  conditional_wakeup (context);
++  g_wakeup_signal (context->wakeup);
+ }
+ 
+ /**
+-- 
+2.14.3
+

diff --git a/glib2.spec b/glib2.spec
index 75a8beb..fefc419 100644
--- a/glib2.spec
+++ b/glib2.spec
@@ -5,13 +5,17 @@
 
 Name: glib2
 Version: 2.55.1
-Release: 1%{?dist}
+Release: 2%{?dist}
 Summary: A library of handy utility functions
 
 License: LGPLv2+
 URL: http://www.gtk.org
 Source0: http://download.gnome.org/sources/glib/2.55/glib-%{version}.tar.xz
 
+# Backported from upstream
+# https://bugzilla.gnome.org/show_bug.cgi?id=761102
+Patch0: 0001-gmain-Partial-revert-of-recent-wakeup-changes-to-gma.patch
+
 BuildRequires: chrpath
 BuildRequires: gettext
 BuildRequires: perl-interpreter
@@ -224,6 +228,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_datadir}/installed-tests
 
 %changelog
+* Thu Jan 18 2018 Kalev Lember <klember@redhat.com> - 2.55.1-2
+- gmain: Partial revert of recent wakeup changes
+
 * Mon Jan 08 2018 Kalev Lember <klember@redhat.com> - 2.55.1-1
 - Update to 2.55.1
 - Drop upstreamed systemtap multilib fix

                 reply	other threads:[~2026-08-11 10:36 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=178644458968.1.4979663822743867563.rpms-glib2-087ef3ba0f76@fedoraproject.org \
    --to=klember@redhat.com \
    --cc=git-commits@fedoraproject.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox