Skip to content

Close xcb connection after freeing display structure

Olivier Fourdan requested to merge ofourdan/libx11:no-xsync-after-closing into master

Commit 1472048b 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
  | #5 in _XFreeDisplayStructure () at /lib64/libX11.so.6
  | #6 in XCloseDisplay () at /lib64/libX11.so.6

To avoid that issue, closed the xcb connection to the display last.

Signed-off-by: Olivier Fourdan ofourdan@redhat.com

Edited by Olivier Fourdan

Merge request reports