/usr/lib64/libX11.so.6: undefined symbol: xcb_take_socket

Hi,
I still have the problem that after upgrading my SLES from 11SP3 to 12SP1
most X11 command result in a symbol lookup error: /usr/lib64/libX11.so.6: undefined symbol: xcb_take_socket

I studied the problem at my best and now I’m quite sure that it there must be a bug (at least) in the upgrade procedure
I’d like to open a bug but I’m not entitled since I only pay for using SLES, not for having any support.

Here it follows why I’m sure there is a bug:
[LIST=1]
[*]yast2 sw_single often complains that “xxxx requires libxcb-xlib.so.0()(64bit), but this requirement cannot be provided” BUT the lib is in its place

cd /usr/lib64
ls -ls libxcb-xlib*
0 lrwxrwxrwx 1 root root   20 Mar  2  2014 libxcb-xlib.so.0 -> libxcb-xlib.so.0.0.0*
8 -rwxr-xr-x 1 root root 6248 May 24  2013 libxcb-xlib.so.0.0.0*

[*]/usr/lib64/libxcb.so is faulty link to a non-existing libxcb.so.1.1.0

cd /usr/lib64
ls -ls libxcb.so*
  0 lrwxrwxrwx 1 root root     15 Aug 11 13:51 libxcb.so -> libxcb.so.1.1.0
  0 lrwxrwxrwx 1 root root     15 Mar  2  2014 libxcb.so.1 -> libxcb.so.1.0.0
116 -rwxr-xr-x 1 root root 113536 May 24  2013 libxcb.so.1.0.0

I manually changed the link of libxcb.so so that it now points to libxcb.so.1.0.0 instead of libxcb.so.1.1.0
But such change doesn’t help in my problem!
[*] /usr/lib64/libX11.so.6.2.0 calls xcb_take_socket which is NOWHERE defined!!

cd /usr/lib64
for i in `ls *.so`; do echo $i ;nm -D $i|grep "T xcb_take_socket" ;done 

[/LIST]

Of course I’d really apreciate any help.
Thanks,
Emanuele

This is the list X-related installed rpm

 rpm -qa | grep -i X11 | sort
dbus-1-x11-1.8.16-19.1.x86_64
emacs-x11-24.3-16.32.x86_64
ghostscript-x11-9.15-6.5.x86_64
libQt5X11Extras5-5.5.1-3.2.x86_64
libX11-6-1.6.2-4.12.x86_64
libX11-6-32bit-1.6.2-4.12.x86_64
libX11-data-1.6.2-4.12.noarch
libX11-devel-1.6.2-4.12.x86_64
libX11-xcb1-1.6.2-4.12.x86_64
libX11-xcb1-32bit-1.6.2-4.12.x86_64
libqt4-x11-32bit-4.8.6-7.1.x86_64
libqt4-x11-4.8.6-7.1.x86_64
libxkbcommon-x11-0-0.4.1-3.1.x86_64
patterns-sles-x11-12-64.3.x86_64
perl-X11-Protocol-0.56-12.19.x86_64
pulseaudio-module-x11-5.0-2.7.x86_64
x11-tools-0.1-205.1.noarch
x11perf-1.5.4-1.15.x86_64
xorg-x11-7.6_1-14.17.noarch
xorg-x11-Xvnc-1.4.3-14.1.x86_64
xorg-x11-devel-7.6-45.14.noarch
xorg-x11-driver-input-7.6_1-11.10.noarch
xorg-x11-driver-video-7.6_1-14.30.x86_64
xorg-x11-essentials-7.6_1-14.17.noarch
xorg-x11-fonts-7.6-29.45.noarch
xorg-x11-fonts-core-7.6-29.45.noarch
xorg-x11-libXpm-7.4-1.17.x86_64
xorg-x11-libs-7.6-45.14.noarch
xorg-x11-libxcb-7.4-1.29.1.x86_64
xorg-x11-proto-devel-7.6-49.97.x86_64
xorg-x11-server-7.6_1.15.2-51.2.x86_64
xorg-x11-server-extra-7.6_1.15.2-51.2.x86_64
xorg-x11-server-sdk-7.6_1.15.2-51.2.x86_64
xorg-x11-util-devel-7.6_1-7.15.noarch
yast2-x11-3.1.3-2.14.x86_64

emanuele,

It appears that in the past few days you have not received a response to your
posting. That concerns us, and has triggered this automated reply.

These forums are peer-to-peer, best effort, volunteer run and that if your issue
is urgent or not getting a response, you might try one of the following options:

Be sure to read the forum FAQ about what to expect in the way of responses:
http://forums.suse.com/faq.php

If this is a reply to a duplicate posting or otherwise posted in error, please
ignore and accept our apologies and rest assured we will issue a stern reprimand
to our posting bot…

Good luck!

Your SUSE Forums Team
http://forums.suse.com

SOLVED!!

soon after the upgrade in /usr/lib64 there was a problem:
libxcb.so pointed to a missing .so

cd /usr/lib64
ls -ls libxcb.so*
0 lrwxrwxrwx 1 root root 15 Aug 11 13:51 libxcb.so → libxcb.so.1.1.0
0 lrwxrwxrwx 1 root root 15 Mar 2 2014 libxcb.so.1 → libxcb.so.1.0.0
116 -rwxr-xr-x 1 root root 113536 May 24 2013 libxcb.so.1.0.0

The file /usr/lib64/libxcb.so.1.1.0 was missing, being present only its previous version libxcb.so.1.0.0

I found out that in the SLES12SP1 DVD1 there is a rpm named libxcb1-1.10-1.21.x86_64.rpm which contains the version 1.1.0 of libxcb.
Such rpm was not installed during the upgrade process (I don’t know why) and when I had a look into it I found there the missing
xcb_take_socket

rpm2cpio /mnt/suse/x86_64/libxcb1-1.10-1.21.x86_64.rpm |cpio -idmv
./usr/lib64/libxcb.so.1
./usr/lib64/libxcb.so.1.1.0
255 blocks

nm -D ./usr/lib/libxcb.so.1 |grep xcb_take_socket
0000a8f0 T xcb_take_socket

since in /usr/lib64 there was not any libxcb.so.1.1.0 I copied there the one in ./usr/lib/

In /usr/lib64 I then modified the links libxcb.so and libxcb.so.1 to point to the new libxcb.so.1.1.0

Now all seems to work properly!

I hope this helps somone.
Ciao,
Emanuele

Hi Emanuele,

although you seem to run fine, there are two things that catch the eye:

since in /usr/lib64 there was not any libxcb.so.1.1.0 I copied there the one in ./usr/lib/

this usually means you copied a 32bit version (stored in /usr/lib) to the place where the system is looking for 64bit versions (/usr/lib64). You better double-check that the libs’ architecture is right in both locations (i.e using the “file” command, which should report “ELF 32-bit LSB shared object” for files in /usr/lib and “ELF 64-bit LSB shared object” for files in /usr/lib64).

I found out that in the SLES12SP1 DVD1 there is a rpm named libxcb1-1.10-1.21.x86_64.rpm
[…]
since in /usr/lib64 there was not any libxcb.so.1.1.0 I copied there the one in ./usr/lib/
In /usr/lib64 I then modified the links libxcb.so and libxcb.so.1 to point to the new libxcb.so.1.1.0

was there any reason you didn’t just install the RPM, which should have installed the (64 bit) lib and created the symlinks? That way you’d also catch any future updates to that package.

Regards,
Jens

I’M sorry but when I posted this question I also opened a very similar thread (I was really in panic!)
I suggest to continue the discussion in the other thread
https://forums.suse.com/showthread.php?8100-X11-commands-broken-after-SLES11SP3-to-SLES12SP1-upgrade