public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/glib2] cve-2026-58016-f44: gmain: Partial revert of recent wakeup changes
@ 2026-08-11 10:36 Kalev Lember
  0 siblings, 0 replies; only message in thread
From: Kalev Lember @ 2026-08-11 10:36 UTC (permalink / raw)
  To: git-commits

            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

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-11 10:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-11 10:36 [rpms/glib2] cve-2026-58016-f44: gmain: Partial revert of recent wakeup changes Kalev Lember

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox