missing symbol in libQt5Gui, Linux

Tech support and suggestions forum. If you only have a basic question on how to get started, please use the "newbies" forum in the community section.

Moderator: joepal

missing symbol in libQt5Gui, Linux

Postby bliako » Wed Dec 05, 2018 10:18 am

Hi there,

I am trying to run makehuman on Linux,Fedora27,kernel 4.18 (latest) but it fails complaining about a missing symbol in libQt5Gui.so which plugin xcb can not find.

Steps I took to install:
I have downloaded the source code and followed instructions on how to run the python scripts to download various bits and then called the python scripts to do some compilations.

Eventually I got to run "makehuman.py" but I got the following error:
Initialized logging
VERSION: master:f540549b
HG REVISION: UNKNOWN
SHORT VERSION: v1.2.0
BASEMESH VERSION: hm08
IS BUILT (FROZEN): No
IS RELEASE VERSION: No
DEFAULT ENCODING: utf-8
FILESYSTEM ENCODING: utf-8
STDOUT ENCODING: UTF-8
...
SYS.VERSION: 3.6.6 (default, Jul 19 2018, 16:29:00) [GCC 7.3.1 20180303 (Red Hat 7.3.1-5)]
SYS.PLATFORM: linux
SYS.EXECUTABLE: /usr/bin/python3
PLATFORM.MACHINE: x86_64
PLATFORM.PROCESSOR: x86_64
PLATFORM.UNAME.RELEASE: 4.18.19-100.fc27.x86_64
PLATFORM.LINUX_DISTRIBUTION: Fedora 27 Twenty Seven
NUMPY.VERSION: 1.14.5
OpenGL_accelerate module loaded
Using accelerated ArrayDatatype
...
Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
Cannot load library /usr/local/lib64/python3.6/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (/usr/lib64/libQt5XcbQpa.so.5: symbol _ZN22QWindowSystemInterface25handleWindowScreenChangedEP7QWindowP7QScreen, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)
QLibraryPrivate::loadPlugin failed on "/usr/local/lib64/python3.6/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so" : "Cannot load library /usr/local/lib64/python3.6/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so: (/usr/lib64/libQt5XcbQpa.so.5: symbol _ZN22QWindowSystemInterface25handleWindowScreenChangedEP7QWindowP7QScreen, version Qt_5_PRIVATE_API not defined in file libQt5Gui.so.5 with link time reference)"
...
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.

Aborted (core dumped)
-----

(I have set : export QT_DEBUG_PLUGINS=100)

I had made sure that PyQt5 was installed (as root, via pip and pip3). Also I have installed package Qt5 via dnf (fedora's package manager).

So, it complains about a missing symbol in libQt5Gui.so.5.9.6, specifically _ZN22QWindowSystemInterface25handleWindowScreenChangedEP7QWindowP7QScreen

But here is the dump of the library:

$ objdump -TC /usr/lib64/libQt5Gui.so.5.9.6

00000000000dad30 g DF .text 0000000000000071 Qt_5_PRIVATE_API QWindowSystemInterface::handleWindowScreenChanged(QWindow*, QScreen*)
00000000003e2ab0 g DF .text 000000000000005b Qt_5 QTextDocument::blockCountChanged(int)

and

$ readelf -Ws /usr/lib64/libQt5Gui.so.5.9.6

8352: 00000000000dad30 113 FUNC GLOBAL DEFAULT 13 _ZN22QWindowSystemInterface25handleWindowScreenChangedEP7QWindowP7QScreen@@Qt_5_PRIVATE_API

So, I guess that means symbol is there right?

Any ideas?

bw, bliako
bliako
 
Posts: 2
Joined: Wed Dec 05, 2018 9:53 am

Re: missing symbol in libQt5Gui, Linux

Postby joepal » Wed Dec 05, 2018 10:41 am

This is beyond me. It seems like a problem with the fedora packaging of pyqt, or that some common depencency hasn't been loaded/installed

What I could find is this: https://joscor.com/blog/fedora-24-fix-n ... lugin-xcb/

and this: https://forums.fedoraforum.org/showthre ... t-xcb-quot

I have no idea if these are relevant, as I haven't used redhat/centos/fedora for half a decade now.
Joel Palmius (LinkedIn)
MakeHuman Infrastructure Manager
http://www.palmius.com/joel
joepal
 
Posts: 4473
Joined: Wed Jun 04, 2008 11:20 am

Re: missing symbol in libQt5Gui, Linux

Postby bliako » Wed Dec 05, 2018 11:37 am

Good news!

I did the following 2 things:

1) Re-install all qt5 little packages in my system. (This one-liner can be of use to some, it lists all qt5 little packages and then re-installs each - note that my system is x86_64 so I filter out all i686 etc.: dnf list qt5* | grep x86 | grep -i qt5 | awk '{print "dnf install "$1}' | sh)

2) Remove python's PyQt5 (oh what a pleasure that is) using this command: pip3 uninstall PyQt5

makehuman.py now runs OK (impressive interface, great work btw!)

I think the critical step (for my system) is #2, remove PyQt5 (or do not install it at all). So I would start with that first.

Obviously, removing PyQt5 when you say is required makes no sense. So, it could be that somewhere in my system there is PyQt5 (maybe installed via the package manager, dnf, rather than pip3?).

Anyway, that's enough manure digging for me in the guts of python. I hate snakes.

Thanks for your assistance.

bw, bliako
bliako
 
Posts: 2
Joined: Wed Dec 05, 2018 9:53 am

Re: missing symbol in libQt5Gui, Linux

Postby joepal » Wed Dec 05, 2018 12:24 pm

Well that causes the situation to make a lot more sense. If you have multiple conflicting versions of pyqt installed and they are linked in different ways to varying components of qt, then you're bound to run into trouble.

To avoid problems in the future, you should probably choose to use either the RPM packaged versions of pyqt, numpy and pyopengl, or the pip packaged versions of the same.

On ubuntu we rely completely on the system (deb) installed versions and on windows we rely completely on pip.
Joel Palmius (LinkedIn)
MakeHuman Infrastructure Manager
http://www.palmius.com/joel
joepal
 
Posts: 4473
Joined: Wed Jun 04, 2008 11:20 am


Return to Bugs, problems and feature requests

Who is online

Users browsing this forum: No registered users and 1 guest