Issues related to applications and software problems
-
chemist
- Posts: 26
- Joined: 2014/08/21 17:15:28
Post
by chemist » 2019/11/11 14:13:37
Hello,
Launching Goldendict as regular user crashes with the following error:
Code: Select all
$ goldendict
goldendict: symbol lookup error: /lib64/libQtWebKit.so.4: undefined symbol: _ZN10QSslSocket16staticMetaObjectE
At the same time, as root or using sudo, the program launches w/o pb. What's the trick and how to fix it ?
Thanks,
-
tunk
- Posts: 1205
- Joined: 2017/02/22 15:08:17
Post
by tunk » 2019/11/11 14:43:18
I don't know what your problems is, but you may start by comparing
environmental variables (e.g. env |grep -e QT -e PATH). You could
also run this: strings /lib64/libQtWebKit.so.4|grep ZN10QS
-
chemist
- Posts: 26
- Joined: 2014/08/21 17:15:28
Post
by chemist » 2019/11/11 15:03:50
tunk wrote: ↑2019/11/11 14:43:18
I don't know what your problems is, but you may start by comparing
environmental variables (e.g. env |grep -e QT -e PATH). You could
also run this: strings /lib64/libQtWebKit.so.4|grep ZN10QS
Code: Select all
$ env |grep -e QT -e PATH
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
QT_GRAPHICSSYSTEM_CHECKED=1
LD_LIBRARY_PATH=/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09:/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09:/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09:/opt/gv/lib:/opt/gv/lib:/opt/gv/lib
PATH=/opt/gview:/opt/molden:/opt/MATLAB/bin:/usr/lib64/ccache:/opt/gview:/opt/molden:/opt/MATLAB/R2019b/bin:/opt/gview:/opt/molden:/opt/MATLAB/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/var/lib/snapd/snap/bin:/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09:/home/EK/.local/bin:/home/EK/bin:/usr/bin:/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09:/opt/g09/bsd:/opt/g09/local:/opt/g09/extras:/opt/g09
QTLIB=/usr/lib64/qt-3.3/lib
WINDOWPATH=1
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins:/usr/lib/kde4/plugins:/home/KIRILLOV/.kde/lib64/kde4/plugins/:/usr/lib64/kde4/plugins/
Code: Select all
$ strings /lib64/libQtWebKit.so.4|grep ZN10QS
_ZN10QSslSocket16staticMetaObjectE
_ZN10QSslSocketC1EP7QObject
_ZN10QSslSocket22connectToHostEncryptedERK7QStringt6QFlagsIN9QIODevice12OpenModeFlagEE
In addition,
if I do as regular user:
Code: Select all
$ ldd -r /lib64/libQtWebKit.so.4
linux-vdso.so.1 => (0x00007ffdbff7a000)
libXrender.so.1 => /lib64/libXrender.so.1 (0x0000145e24eba000)
libjpeg.so.62 => /lib64/libjpeg.so.62 (0x0000145e24c65000)
libpng15.so.15 => /lib64/libpng15.so.15 (0x0000145e24a3a000)
libwebp.so.4 => /lib64/libwebp.so.4 (0x0000145e247ea000)
libxslt.so.1 => /lib64/libxslt.so.1 (0x0000145e245ab000)
libz.so.1 => /lib64/libz.so.1 (0x0000145e24395000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000145e24191000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x0000145e23df2000)
libgstapp-0.10.so.0 => /lib64/libgstapp-0.10.so.0 (0x0000145e23be6000)
libgstinterfaces-0.10.so.0 => /lib64/libgstinterfaces-0.10.so.0 (0x0000145e239d4000)
libgstpbutils-0.10.so.0 => /lib64/libgstpbutils-0.10.so.0 (0x0000145e237b0000)
libgstvideo-0.10.so.0 => /lib64/libgstvideo-0.10.so.0 (0x0000145e23593000)
libgstbase-0.10.so.0 => /lib64/libgstbase-0.10.so.0 (0x0000145e2333f000)
libgstreamer-0.10.so.0 => /lib64/libgstreamer-0.10.so.0 (0x0000145e23056000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000145e22e05000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x0000145e22c01000)
libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000145e229ff000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x0000145e22695000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000145e2237f000)
libsqlite3.so.0 => /lib64/libsqlite3.so.0 (0x0000145e220ca000)
libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x0000145e21e88000)
libfreetype.so.6 => /lib64/libfreetype.so.6 (0x0000145e21bc9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000145e219ad000)
libQtOpenGL.so.4 => /opt/gv/lib/libQtOpenGL.so.4 (0x0000145e217a0000)
libQtGui.so.4 => /opt/gv/lib/libQtGui.so.4 (0x0000145e20b1b000)
libQtNetwork.so.4 => /opt/gv/lib/libQtNetwork.so.4 (0x0000145e208ec000)
libQtCore.so.4 => /opt/gv/lib/libQtCore.so.4 (0x0000145e204c2000)
libGL.so.1 => /lib64/libGL.so.1 (0x0000145e20219000)
libXext.so.6 => /lib64/libXext.so.6 (0x0000145e20007000)
libX11.so.6 => /lib64/libX11.so.6 (0x0000145e1fcc9000)
libm.so.6 => /lib64/libm.so.6 (0x0000145e1f9c7000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000145e1f6c0000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000145e1f4aa000)
libc.so.6 => /lib64/libc.so.6 (0x0000145e1f0dc000)
/lib64/ld-linux-x86-64.so.2 (0x0000145e274ae000)
libffi.so.6 => /lib64/libffi.so.6 (0x0000145e1eed4000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x0000145e1ec72000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000145e1ea4b000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000145e1e832000)
libmount.so.1 => /lib64/libmount.so.1 (0x0000145e1e5ef000)
liborc-0.4.so.0 => /lib64/liborc-0.4.so.0 (0x0000145e1e36b000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x0000145e1e145000)
libexpat.so.1 => /lib64/libexpat.so.1 (0x0000145e1df1b000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000145e1dd16000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x0000145e1db06000)
libSM.so.6 => /lib64/libSM.so.6 (0x0000145e1d8fe000)
libICE.so.6 => /lib64/libICE.so.6 (0x0000145e1d6e2000)
librt.so.1 => /lib64/librt.so.1 (0x0000145e1d4da000)
libGLX.so.0 => /lib64/libGLX.so.0 (0x0000145e1d2aa000)
libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x0000145e1cfd7000)
libxcb.so.1 => /lib64/libxcb.so.1 (0x0000145e1cdaf000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x0000145e1cb6f000)
libXau.so.6 => /lib64/libXau.so.6 (0x0000145e1c96b000)
undefined symbol: _ZN10QSslSocket16staticMetaObjectE (/lib64/libQtWebKit.so.4)
undefined symbol: _ZN10QSslSocketC1EP7QObject (/lib64/libQtWebKit.so.4)
undefined symbol: _ZN10QSslSocket22connectToHostEncryptedERK7QStringt6QFlagsIN9QIODevice12OpenModeFlagEE (/lib64/libQtWebKit.so.4)
undefined symbol: _ZNK9QSslError5errorEv (/lib64/libQtWebKit.so.4)
Then the four last strings do not appear in the output when the same command "ldd -r /lib64/libQtWebKit.so.4" was run as root.
Reinstalling qt doesn't help...
-
chemal
- Posts: 776
- Joined: 2013/12/08 19:44:49
Post
by chemal » 2019/11/11 15:45:56
chemist wrote: ↑2019/11/11 15:03:50
Code: Select all
...
libQtOpenGL.so.4 => /opt/gv/lib/libQtOpenGL.so.4 (0x0000145e217a0000)
libQtGui.so.4 => /opt/gv/lib/libQtGui.so.4 (0x0000145e20b1b000)
libQtNetwork.so.4 => /opt/gv/lib/libQtNetwork.so.4 (0x0000145e208ec000)
libQtCore.so.4 => /opt/gv/lib/libQtCore.so.4 (0x0000145e204c2000)
...
Your user's setting of LD_LIBRARY_PATH sneaks in parts of somebody else's Qt.
-
chemist
- Posts: 26
- Joined: 2014/08/21 17:15:28
Post
by chemist » 2019/11/11 17:43:55
chemal wrote: ↑2019/11/11 15:45:56
chemist wrote: ↑2019/11/11 15:03:50
Code: Select all
...
libQtOpenGL.so.4 => /opt/gv/lib/libQtOpenGL.so.4 (0x0000145e217a0000)
libQtGui.so.4 => /opt/gv/lib/libQtGui.so.4 (0x0000145e20b1b000)
libQtNetwork.so.4 => /opt/gv/lib/libQtNetwork.so.4 (0x0000145e208ec000)
libQtCore.so.4 => /opt/gv/lib/libQtCore.so.4 (0x0000145e204c2000)
...
Your user's setting of LD_LIBRARY_PATH sneaks in parts of somebody else's Qt.
this is a molecular visualization program in /opt/gv that should be using its own libraries
how can I restitute the global LD_LIBRARY_PATH ?
-
chemal
- Posts: 776
- Joined: 2013/12/08 19:44:49
Post
by chemal » 2019/11/11 18:42:35
Code: Select all
$ env -u LD_LIBRARY_PATH goldendict
should work.
Another idea is to only add /opt/gv/lib to LD_LIBRARY_PATH for those programs that need it. Let's say there is an executable /opt/gv/bin/foo. Then you can create a wrapper script in /usr/local/bin/foo with this content:
Code: Select all
#!/bin/sh
export LD_LIBRARY_PATH=/opt/gv/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
exec /opt/gv/bin/foo
For this to work you don't add /opt/gv/bin to PATH or /opt/gv/lib to LD_LIBRARY_PATH at login.
-
chemist
- Posts: 26
- Joined: 2014/08/21 17:15:28
Post
by chemist » 2019/11/11 19:38:21
chemal wrote: ↑2019/11/11 18:42:35
Code: Select all
$ env -u LD_LIBRARY_PATH goldendict
should work.
Another idea is to only add /opt/gv/lib to LD_LIBRARY_PATH for those programs that need it. Let's say there is an executable /opt/gv/bin/foo. Then you can create a wrapper script in /usr/local/bin/foo with this content:
Code: Select all
#!/bin/sh
export LD_LIBRARY_PATH=/opt/gv/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
exec /opt/gv/bin/foo
For this to work you don't add /opt/gv/bin to PATH or /opt/gv/lib to LD_LIBRARY_PATH at login.
Everything works, thanks a lot !!!