NicolasGuilloux / blade-shadow-beta

Various documentation and tools for Shadow on Linux maintained by community
MIT License
119 stars 21 forks source link

Doc issue re: error R-1 on Fedora #80

Open lotaris-xx opened 3 years ago

lotaris-xx commented 3 years ago

I have a laptop that has an nvidia card and the builtin intel HD 530. I kept getting this R-1 issue under both pure nvidia and intel.

Solution was:

./ShadowBeta.AppImage --appimage-extract cd squashfs-root ./shadow-preprod

This works for both intel and nvidia.

Maybe could add as a known issue? Happy to troubleshoot further.

NicolasGuilloux commented 3 years ago

Hi! Do you mind giving more information about your OS? Could be really useful to find out what the issue was. Because extracting the AppImage is more a workaround than a real fix to me ^^

Thanks for the reporting though :)

lotaris-xx commented 3 years ago

Sure. It's a Fedora 33 box (although F32 was the same for me).

I tracked it down to the following:

[pid 368144] writev(2, [{iov_base="./Shadow", iov_len=8}, {iov_base=": ", iov_len=2}, {iov_base="/tmp/Shadow/resources/app.asar.unpacked/release/native/libcrypto.so.1.1", iov_len=71}, {iov_base=": ", iov_len=2}, {iov_base="version `OPENSSL_1_1_1b' not found (required by /lib64/libk5crypto.so.3)", iov_len=72}, {iov_base="\n", iov_len=1}], 6) = 156

If I remove the libcrypto.so.1.1 out of resources/app.asar.unpacked/release/native/ then I can run ./AppRun in the unpacked AppImage dir and it all works fine.

Root cause:

$ LD_LIBRARY_PATH=/tmp/Shadow/resources/app.asar.unpacked/release/native/ ldd -v /lib64/libk5crypto.so.3.1
/lib64/libk5crypto.so.3.1: /tmp/Shadow/resources/app.asar.unpacked/release/native/libcrypto.so.1.1: version `OPENSSL_1_1_1b' not found (required by /lib64/li
bk5crypto.so.3.1)
        linux-vdso.so.1 (0x00007ffec11f3000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007ff3b0e9b000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007ff3b0e94000)
        libcrypto.so.1.1 => /tmp/Shadow/resources/app.asar.unpacked/release/native/libcrypto.so.1.1 (0x00007ff3b0bc9000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ff3b0baf000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff3b09e4000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff3b09b7000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007ff3b09ae000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff3b098c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff3b0ef0000)
        libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007ff3b08f6000)

        Version information:
        /lib64/libk5crypto.so.3.1:
                libkrb5support.so.0 (krb5support_0_MIT) => /lib64/libkrb5support.so.0
                libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.25) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
                **libcrypto.so.1.1 (OPENSSL_1_1_1b) => not found**
                libcrypto.so.1.1 (OPENSSL_1_1_0) => /tmp/Shadow/resources/app.asar.unpacked/release/native/libcrypto.so.1.1

With the native libcrypto I see:

        Version information:
        /lib64/libk5crypto.so.3.1:
                libkrb5support.so.0 (krb5support_0_MIT) => /lib64/libkrb5support.so.0
                libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.25) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
                libcrypto.so.1.1 (OPENSSL_1_1_1b) => /lib64/libcrypto.so.1.1
                libcrypto.so.1.1 (OPENSSL_1_1_0) => /lib64/libcrypto.so.1.1

So including a libk5crypto.so.3 (and libs that might have a similar version issue) that were linked against the older libcrypto/openssl in the release/native/ dir would likely solve this.

Let me know if you need any other info.

Thanks!

I personally am fine with running shadow.preprod from the unpacked AppImage as every needed lib (outside of the older ffmpeg shipped in the bundle) is provided natively by the fedora folks.

CoolSilver commented 3 years ago

I have confirmed removing the conflicting libcrypto.so.1.1 file on the stable version also corrects the R-1 error on Fedora 33

NicolasGuilloux commented 3 years ago

Maybe the AppImage ships too much library, and it starts to be outdated or is in conflict with the current libraries you have. I guess I'll give this issue to a dev to check why it bugs like that.

I don't like to mess with the libraries ^^

lerenn commented 3 years ago

Thank you so much ! I extracted the AppImage, removed the faulty crypto library and add the other one, then repack it all as a AppImage. It works like a charm under Fedora 33 !

lerenn commented 3 years ago

When there is an update, it erases all changes so, I have made a script to automatically apply the fix :

#!/bin/bash

# Move modified and original
rm -f ./ShadowBeta.Original.AppImage
mv ShadowBeta.Modified.AppImage ShadowBeta.Original.AppImage

# Extract Image
chmod +x ShadowBeta.Original.AppImage
./ShadowBeta.Original.AppImage --appimage-extract
pushd squashfs-root/resources/app.asar.unpacked/release/native/
rm -f libcrypto.so.1.1 
cp -f /usr/lib64/libk5crypto.so.3 .
popd

# Rebuild image
./appimagetool-x86_64.AppImage squashfs-root ShadowBeta.Modified.AppImage

# Clean up
rm -rf squashfs-root

If it can help someone ;)