diff --git a/264.patch b/264.patch new file mode 100644 index 0000000..730b38d --- /dev/null +++ b/264.patch @@ -0,0 +1,116 @@ +From f3d6ebac35301d4ad068e307f0fbe6aa12ccbccb Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 9 Aug 2024 09:21:31 +0200 +Subject: [PATCH 1/2] Close xcb connection after freeing display structure +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 1472048b7 to fix a colormap threading issue added a display +lock/unlock and a call to SyncHandle() to _XcmsFreeClientCmaps(). + +When running synchronized, that means calling XSync(). + +_XcmsFreeClientCmaps() is called from _XFreeDisplayStructure() via +XCloseDisplay() after the xcb connection is closed. + +So when running synchronized, we may end up calling XSync() after the +xcb connection to the display is closed, which will generate a spurious +XIO error: + + | #0 in _XDefaultIOError () at /lib64/libX11.so.6 + | #1 in _XIOError () at /lib64/libX11.so.6 + | #2 in _XReply () at /lib64/libX11.so.6 + | #3 in XSync () at /lib64/libX11.so.6 + | #4 in _XSyncFunction () at /lib64/libX11.so.6 + | 8#5 in _XFreeDisplayStructure () at /lib64/libX11.so.6 + | 8#6 in XCloseDisplay () at /lib64/libX11.so.6 + +To avoid that issue, closed the xcb connection to the display last. + +v2: And same in OutOfMemory() as well (José Expósito) + +Signed-off-by: Olivier Fourdan +Reviewed-by: José Expósito +Part-of: +--- + src/ClDisplay.c | 4 +++- + src/OpenDis.c | 7 +++++-- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/ClDisplay.c b/src/ClDisplay.c +index aa904e51..31d3a841 100644 +--- a/src/ClDisplay.c ++++ b/src/ClDisplay.c +@@ -47,6 +47,7 @@ XCloseDisplay ( + { + register _XExtension *ext; + register int i; ++ xcb_connection_t *connection; + + if (!(dpy->flags & XlibDisplayClosing)) + { +@@ -68,7 +69,8 @@ XCloseDisplay ( + if (X_DPY_GET_REQUEST(dpy) != X_DPY_GET_LAST_REQUEST_READ(dpy)) + XSync(dpy, 1); + } +- xcb_disconnect(dpy->xcb->connection); ++ connection = dpy->xcb->connection; + _XFreeDisplayStructure (dpy); ++ xcb_disconnect(connection); + return 0; + } +diff --git a/src/OpenDis.c b/src/OpenDis.c +index 89a0ebdf..6cc43ba3 100644 +--- a/src/OpenDis.c ++++ b/src/OpenDis.c +@@ -709,7 +709,10 @@ void _XFreeDisplayStructure(Display *dpy) + + static void OutOfMemory(Display *dpy) + { +- if(dpy->xcb->connection) +- xcb_disconnect(dpy->xcb->connection); ++ xcb_connection_t *connection = dpy->xcb->connection; ++ + _XFreeDisplayStructure (dpy); ++ ++ if(connection) ++ xcb_disconnect(connection); + } +-- +GitLab + + +From 19b2f5c2d0935cbf9c17ecf30604f80592807b59 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 9 Aug 2024 10:24:13 +0200 +Subject: [PATCH 2/2] Fix indentation + +Signed-off-by: Olivier Fourdan +Part-of: +--- + src/OpenDis.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/OpenDis.c b/src/OpenDis.c +index 6cc43ba3..9c06d388 100644 +--- a/src/OpenDis.c ++++ b/src/OpenDis.c +@@ -709,10 +709,10 @@ void _XFreeDisplayStructure(Display *dpy) + + static void OutOfMemory(Display *dpy) + { +- xcb_connection_t *connection = dpy->xcb->connection; ++ xcb_connection_t *connection = dpy->xcb->connection; + +- _XFreeDisplayStructure (dpy); ++ _XFreeDisplayStructure (dpy); + +- if(connection) +- xcb_disconnect(connection); ++ if (connection) ++ xcb_disconnect(connection); + } +-- +GitLab + diff --git a/libX11.spec b/libX11.spec index 293e8fe..0d8d346 100644 --- a/libX11.spec +++ b/libX11.spec @@ -4,7 +4,7 @@ Summary: Core X11 protocol client library Name: libX11 -Version: 1.8.12 +Version: 1.8.10 Release: 2%{?gitdate:.%{gitdate}git%{gitversion}}%{?dist} License: MIT AND X11 URL: http://www.x.org @@ -20,6 +20,9 @@ Source0: https://xorg.freedesktop.org/archive/individual/lib/%{name}-%{version}. Patch2: dont-forward-keycode-0.patch +# https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/264 +Patch: 264.patch + BuildRequires: libtool BuildRequires: make BuildRequires: xorg-x11-util-macros >= 1.11 @@ -123,21 +126,6 @@ make %{?_smp_mflags} check %{_mandir}/man5/*.5* %changelog -* Mon Dec 22 2025 Peter Hutterer - 1.8.12-2 -- Rebuild to pick up latest xorg proto keysyms (#2413818) - -* Thu Jul 24 2025 Olivier Fourdan - 1.8.12-1 -- libX11 1.8.12 - -* Thu Jul 24 2025 Fedora Release Engineering - 1.8.11-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Mon Feb 03 2025 José Expósito - 1.8.11-1 -- libX11 1.8.11 - -* Fri Jan 17 2025 Fedora Release Engineering - 1.8.10-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - * Thu Aug 22 2024 Florian Müllner - 1.8.10-2 - Fix spurious Xerror when running synchronized diff --git a/sources b/sources index 295b411..33944c3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libX11-1.8.12.tar.xz) = cb7a284d9081a8b67f7d8568d56dc403a4b787e46ac497b07768d236084c01f80f4ea2ebd814f950ac9738adc3baea3912932fc333858195c4f8217744b6f730 +SHA512 (libX11-1.8.10.tar.xz) = f801f5b77cbc55074f73dc95b29fff7b5e1b13b99641f6e397788ad9f31a29793ed4e8e5bd373122c790ef90627e8f9d6d5e271051c1767a479a85c55cd82bc1