Hello,
Trying to get mrViewer v6.1.6 working on RHEL / Rocky 8.6. I get the following error:
```/opt/mrviewer/mrviewer//bin/mrViewer: /opt/mrviewer/mrviewer//lib/libp11-kit.so.0: no version information available (required by /opt/mrviewer/mrviewer//lib/libgnutls.so.30)
/opt/mrviewer/mrviewer//bin/mrViewer: symbol lookup error: /opt/mrviewer/mrviewer//lib/libgnutls.so.30: undefined symbol: asn1_der_decoding2, version LIBTASN1_0_3
I believe I've tracked it down to `libgnutls.so` - it seems like there are two dynamic links to different versions of the library
cd /path/to/mrviewer/bin
export LD_LIBRARY_PATH=../lib
ldd mrViewer
I think you have messed your symbolic links somehow. mrViewer ships with and uses libgnutls.so.26.22.6 (or the symlink libgnutls.so.26). This in turn requires libp11-kit.so.0 which is also included.
Try running mrViewer with the mrViewer.sh script which should set the LD_LIBRARY_PATH correctly, and make sure there are no additional libgnutls.so in the lib directory.
Last edit: ggarra13 2022-05-22
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Here is a more detailed breakdown of what I'm doing and what I'm seeing.
download mrViewer-v6.1.6-Linux-64.tar.gz
extract the tar
cd mrViewer-v6.1.6-Linux-64/usr/local/mrViewer-v6.1.6-Linux-64/bin/
$ ./mrViewer.sh
/path/to/mrviewer/bin/mrViewer: /path/to/mrviewer/lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
/path/to/mrviewer/bin/mrViewer: symbol lookup error: /lib64/libgnutls.so.30: undefined symbol: asn1_der_decoding2, version LIBTASN1_0_3
$ ldd mrViewer | grep libgnu
./mrViewer: ../lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
libgnutls.so.26 => ../lib/libgnutls.so.26 (0x00007f170d9dd000)
libgnutls.so.30 => /lib64/libgnutls.so.30 (0x00007f170833c000)
$ ldd mrViewer | grep libp11
./mrViewer: ../lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
libp11-kit.so.0 => ../lib/libp11-kit.so.0 (0x00007f5d5c6d5000)
It seems like somehow my system libgnutls.so.30 is being pulled into the library linking... :/
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Okay, unset LD_PRELOAD. Now to be thorough can you do the following:
$ nm -D /lib64/libtasn1.so.6 | grep asn1_der_decoding
00000000000099b0 T asn1_der_decoding
00000000000089d0 T asn1_der_decoding2
00000000000099d0 T asn1_der_decoding_element
00000000000099f0 T asn1_der_decoding_startEnd
or wherever libtasn1.so.6 is. We need to make sure it contains asn1_der_decoding2.
If it does, remove libtasn1.so* from the path/to/mrviewer/lib directory and try again.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for helping me troubleshoot this! I did as you suggested and removed the libtasn1.so* from the mrviewer lib directory. Unfortunately it does not seem to change the behavior.
I have attached the strace from a clean install with the following steps:
$ cd /path/to/mrviewer/bin
$ export LD_LIBRARY_PATH=../lib
$ strace ./mrViewer &> log.txt
Thanks! I tried the one you compiled with ubuntu 20.04 LTS but I get a bunch of GLIBC errors like versionGLIBC_2.29' not found` - I'm assuming this means that the versions of GLIBC are different between the distributions :(
I tried out lddtree (very cool tool I wish I had known about this before! :D )
I've attached the output of lddtree. It looks like libgnutls.so.30 is being pulled in by libpango-1.0.so.0 then libglib-2.0.so.0.
Based on that info I downloaded glib2-2.56.1-7.el7.x86_64.rpm, extracted libglib-2.0.so* and added it to the /path/to/mrviewer/libs directory, and it opens and seems to work as expected.
Based on that info I downloaded glib2-2.56.1-7.el7.x86_64.rpm, extracted libglib-2.0.so* and added it to the /path/to/mrviewer/libs directory, and it opens and seems to work as expected.
Great! I am glad you made it work. I'll have to add libglib-2.0.so to the distribution to work around Red Hat's crazy implementation of their own. That should make it into v6.1.7.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
Trying to get mrViewer v6.1.6 working on RHEL / Rocky 8.6. I get the following error:
```/opt/mrviewer/mrviewer//bin/mrViewer: /opt/mrviewer/mrviewer//lib/libp11-kit.so.0: no version information available (required by /opt/mrviewer/mrviewer//lib/libgnutls.so.30)
/opt/mrviewer/mrviewer//bin/mrViewer: symbol lookup error: /opt/mrviewer/mrviewer//lib/libgnutls.so.30: undefined symbol: asn1_der_decoding2, version LIBTASN1_0_3
cd /path/to/mrviewer/bin
export LD_LIBRARY_PATH=../lib
ldd mrViewer
I think it needs libgnutls v3.6.9, but this library is not available for Centos 8 without compiling it from scratch. Any reccomendations?
Thanks for your help.
I think you have messed your symbolic links somehow. mrViewer ships with and uses libgnutls.so.26.22.6 (or the symlink libgnutls.so.26). This in turn requires libp11-kit.so.0 which is also included.
$ cd /path/to/mrviewer/bin
$ export LD_LIBRARY_PATH=../lib
$ ldd mrViewer | grep libgnu
libgnutls.so.26 => ../lib/libgnutls.so.26 (0x00007f60c9ff8000)
$ ldd mrViewer | grep libp11
libp11-kit.so.0 => ../lib/libp11-kit.so.0 (0x00007f5296e96000)
Try running mrViewer with the mrViewer.sh script which should set the LD_LIBRARY_PATH correctly, and make sure there are no additional libgnutls.so in the lib directory.
Last edit: ggarra13 2022-05-22
Thanks for your reply!
Here is a more detailed breakdown of what I'm doing and what I'm seeing.
cd mrViewer-v6.1.6-Linux-64/usr/local/mrViewer-v6.1.6-Linux-64/bin/
$ ./mrViewer.sh
/path/to/mrviewer/bin/mrViewer: /path/to/mrviewer/lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
/path/to/mrviewer/bin/mrViewer: symbol lookup error: /lib64/libgnutls.so.30: undefined symbol: asn1_der_decoding2, version LIBTASN1_0_3
$ ldd mrViewer | grep libgnu
./mrViewer: ../lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
libgnutls.so.26 => ../lib/libgnutls.so.26 (0x00007f170d9dd000)
libgnutls.so.30 => /lib64/libgnutls.so.30 (0x00007f170833c000)
$ ldd mrViewer | grep libp11
./mrViewer: ../lib/libp11-kit.so.0: no version information available (required by /lib64/libgnutls.so.30)
libp11-kit.so.0 => ../lib/libp11-kit.so.0 (0x00007f5d5c6d5000)
It seems like somehow my system libgnutls.so.30 is being pulled into the library linking... :/
Ugh! That's really nasty. Try the following. Before running mrViewer.sh, do:
$ export LD_PRELOAD="/usr/lib64/libtasn1.so.6"
$ mrViewer.sh
If that works, you can add the preload env var to mrViewer.sh directly.
Last edit: ggarra13 2022-05-22
or:
$ export LD_PRELOAD="/lib64/libtasn1.so.6"
$ mrViewer.sh
if that's where libtasn1.so.6 is.
I tried this but it doesn't seem to change the behavior :C
Okay, unset LD_PRELOAD. Now to be thorough can you do the following:
or wherever libtasn1.so.6 is. We need to make sure it contains asn1_der_decoding2.
If it does, remove libtasn1.so* from the path/to/mrviewer/lib directory and try again.
Also, in case it still does not work, run the following:
$ cd /path/to/mrviewer/bin
$ export LD_LIBRARY_PATH=../lib
$ strace mrViewer &> log.txt
And send the resulting log.txt as an attachment in your next post. That should get me debug why there's two libgnutls.so being loaded.
Thanks for helping me troubleshoot this! I did as you suggested and removed the libtasn1.so* from the mrviewer lib directory. Unfortunately it does not seem to change the behavior.
I have attached the strace from a clean install with the following steps:
$ cd /path/to/mrviewer/bin
$ export LD_LIBRARY_PATH=../lib
$ strace ./mrViewer &> log.txt
Hope it helps!
OK. I found the tool I needed, as strace was kind of useless.
Install lddtree (from app-misc/pax-utils). Then do:
$ cd /path/to/mrviewer/bin
$ export LD_LIBRARY_PATH=../lib
$ lddtree ./mrViewer > tree.txt
and send me the file as an atachment.
Thanks! I tried the one you compiled with ubuntu 20.04 LTS but I get a bunch of GLIBC errors like
version
GLIBC_2.29' not found` - I'm assuming this means that the versions of GLIBC are different between the distributions :(I tried out lddtree (very cool tool I wish I had known about this before! :D )
I've attached the output of lddtree. It looks like libgnutls.so.30 is being pulled in by libpango-1.0.so.0 then libglib-2.0.so.0.
Based on that info I downloaded glib2-2.56.1-7.el7.x86_64.rpm, extracted libglib-2.0.so* and added it to the /path/to/mrviewer/libs directory, and it opens and seems to work as expected.
Great! I am glad you made it work. I'll have to add libglib-2.0.so to the distribution to work around Red Hat's crazy implementation of their own. That should make it into v6.1.7.
Sounds good. Thanks a lot for your help and support!