From: Hemanth Kumar M D <[email protected]>

glib/gdatetime.test ptest was failing after glibc 2.43 upgrade.
Backport upstream fix from glib commit 7c837a52.

Upstream: https://gitlab.gnome.org/GNOME/glib/-/issues/3895

Signed-off-by: Hemanth Kumar M D <[email protected]>
---
 ...tetime-ptest-failure-with-glibc-2.43.patch | 78 +++++++++++++++++++
 meta/recipes-core/glib-2.0/glib.inc           |  1 +
 2 files changed, 79 insertions(+)
 create mode 100644 
meta/recipes-core/glib-2.0/files/0001-glib-2.0-fix-gdatetime-ptest-failure-with-glibc-2.43.patch

diff --git 
a/meta/recipes-core/glib-2.0/files/0001-glib-2.0-fix-gdatetime-ptest-failure-with-glibc-2.43.patch
 
b/meta/recipes-core/glib-2.0/files/0001-glib-2.0-fix-gdatetime-ptest-failure-with-glibc-2.43.patch
new file mode 100644
index 0000000000..f023e687f4
--- /dev/null
+++ 
b/meta/recipes-core/glib-2.0/files/0001-glib-2.0-fix-gdatetime-ptest-failure-with-glibc-2.43.patch
@@ -0,0 +1,78 @@
+From 7c837a520f51db74e482bc8196ed5ff40e432307 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <[email protected]>
+Date: Mon, 23 Feb 2026 12:30:08 +0000
+Subject: [PATCH] gdatetime: Fix comparison against cached LC_TIME value
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The string pointer returned by `setlocale (LC_TIME, NULL)` may change if
+other code calls `setlocale()` again. But because internally glibc
+implements it using `strdup()`, the pointer value itself may actually
+stay the same even if the string contents change.
+
+This started happening more commonly in glibc 2.43, due to an internal
+`malloc()` change which happened to trigger this latent bug.
+
+In the situations where this happened, it resulted in an outdated cached
+era value being used.
+
+Fix it by taking a copy of the `LC_TIME` string. Unfortunately this
+means a reachable (‘leaked’) static string allocation at the end of the
+process’ life, but tooling should ignore that if we mark it with
+`g_ignore_leak()`.
+
+Debugged by Sam James, Wilco and Douglas R. Reno. See also
+https://sourceware.org/bugzilla/show_bug.cgi?id=33899#c6.
+
+Upstream-Status: Backport 
[https://gitlab.gnome.org/GNOME/glib/-/commit/7c837a520f51db74e482bc8196ed5ff40e432307]
+
+Signed-off-by: Philip Withnall <[email protected]>
+Signed-off-by: Hemanth Kumar M D <[email protected]>
+---
+ glib/gdatetime.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/glib/gdatetime.c b/glib/gdatetime.c
+index c4d7445432..8d67354cf2 100644
+--- a/glib/gdatetime.c
++++ b/glib/gdatetime.c
+@@ -65,6 +65,7 @@
+ #include <langinfo.h>
+ #endif
+ 
++#include "glib-private.h"
+ #include "gatomic.h"
+ #include "gcharset.h"
+ #include "gcharsetprivate.h"
+@@ -2981,14 +2982,14 @@ date_time_lookup_era (GDateTime *datetime,
+ {
+   static GMutex era_mutex;
+   static GPtrArray *static_era_description = NULL;  /* (mutex era_mutex) 
(element-type GEraDescriptionSegment) */
+-  static const char *static_era_description_locale = NULL;  /* (mutex 
era_mutex) */
++  static char *static_era_description_locale = NULL;  /* (mutex era_mutex) 
(owned) */
+   const char *current_lc_time = setlocale (LC_TIME, NULL);
+   GPtrArray *local_era_description;  /* (element-type GEraDescriptionSegment) 
*/
+   GEraDate datetime_date;
+ 
+   g_mutex_lock (&era_mutex);
+ 
+-  if (static_era_description_locale != current_lc_time)
++  if (g_strcmp0 (static_era_description_locale, current_lc_time) != 0)
+     {
+       const char *era_description_str;
+       size_t era_description_str_len;
+@@ -3061,7 +3062,9 @@ date_time_lookup_era (GDateTime *datetime,
+ 
+       g_free (tmp);
+ 
+-      static_era_description_locale = current_lc_time;
++      g_free (static_era_description_locale);
++      static_era_description_locale = g_strdup (current_lc_time);
++      g_ignore_leak (static_era_description_locale);
+     }
+ 
+   if (static_era_description == NULL)
+-- 
+GitLab
+
diff --git a/meta/recipes-core/glib-2.0/glib.inc 
b/meta/recipes-core/glib-2.0/glib.inc
index d1f25ef8f2..ea3ab519dd 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -232,6 +232,7 @@ SRC_URI += "\
            file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
            file://skip-timeout.patch \
            file://CVE-2026-0988.patch \
+           
file://0001-glib-2.0-fix-gdatetime-ptest-failure-with-glibc-2.43.patch \
            "
 SRC_URI:append:class-native = " file://relocate-modules.patch \
                                 
file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \
-- 
2.49.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#232993): 
https://lists.openembedded.org/g/openembedded-core/message/232993
Mute This Topic: https://lists.openembedded.org/mt/118281849/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to