Menu

Centos 8 Support

Bugs
2022-05-22
2022-05-23
  • Jedediah Smith

    Jedediah Smith - 2022-05-22

    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

    ...
    libgnutls.so.26 => ../lib/libgnutls.so.26
    ...
    libgnutls.so.30 => ../lib/libgnutls.so.30
    ```

    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.

     
  • ggarra13

    ggarra13 - 2022-05-22

    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
  • Jedediah Smith

    Jedediah Smith - 2022-05-22

    Thanks for your reply!

    Here is a more detailed breakdown of what I'm doing and what I'm seeing.

    1. download mrViewer-v6.1.6-Linux-64.tar.gz
    2. extract the tar
    3. 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... :/

     
  • ggarra13

    ggarra13 - 2022-05-22

    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
  • ggarra13

    ggarra13 - 2022-05-22

    or:

    $ export LD_PRELOAD="/lib64/libtasn1.so.6"
    $ mrViewer.sh

    if that's where libtasn1.so.6 is.

     
  • Jedediah Smith

    Jedediah Smith - 2022-05-22

    I tried this but it doesn't seem to change the behavior :C

     
  • ggarra13

    ggarra13 - 2022-05-22

    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.

     
  • ggarra13

    ggarra13 - 2022-05-22

    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.

     
  • Jedediah Smith

    Jedediah Smith - 2022-05-22

    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!

     
  • ggarra13

    ggarra13 - 2022-05-23

    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.

     
  • Jedediah Smith

    Jedediah Smith - 2022-05-23

    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.

     
  • ggarra13

    ggarra13 - 2022-05-23

    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.

     
  • Jedediah Smith

    Jedediah Smith - 2022-05-23

    Sounds good. Thanks a lot for your help and support!

     

Log in to post a comment.