Running BaldursGateII Gives an OPENSSL_1.0.1 error

Hi there,

If I attempt to run Baldur’s Gate 2 from steam. In the steam client, I click play, and then it silently crashes.

If I run the executable in in a terminal, I get a message about ‘SSL_export_keying_material, version OPENSSL_1.0.1’


dustin@damascus ~/.l/s/S/s/c/Baldur's Gate II Enhanced Edition> ./BaldursGateII
./BaldursGateII: symbol lookup error: ./BaldursGateII: undefined symbol: SSL_export_keying_material, version OPENSSL_1.0.1

Here is the LDD:


dustin@damascus ~/.l/s/S/s/c/Baldur's Gate II Enhanced Edition> ldd./BaldursGateII
        linux-vdso.so.1 (0x00007ffee519b000) 
        /lib64/libssl.so.1.1 (0x00007fd67f5f2000) 
        libopenal.so.1 => /lib64/libopenal.so.1 (0x00007fd67b88c000) 
        libGL.so.1 => /lib64/libGL.so.1 (0x00007fd67f546000) 
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd67f53f000) 
        librt.so.1 => /lib64/librt.so.1 (0x00007fd67f53a000) 
        libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007fd67b81c000) 
        libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fd67b59e000) 
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fd67f50b000) 
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fd67f506000) 
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fd67b376000) 
        libm.so.6 => /lib64/libm.so.6 (0x00007fd67b292000) 
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fd67f4e3000) 
        libc.so.6 => /lib64/libc.so.6 (0x00007fd67b097000) 
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fd67ad60000) 
        libpulse.so.0 => /lib64/libpulse.so.0 (0x00007fd67ad0b000) 
        libportaudio.so.2 => /lib64/libportaudio.so.2 (0x00007fd67acdc000) 
        libasound.so.2 => /lib64/libasound.so.2 (0x00007fd67abd6000) 
        /lib64/ld-linux-x86-64.so.2 (0x00007fd67f695000) 
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007fd67aba4000) 
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007fd67aaed000) 
        libz.so.1 => /lib64/libz.so.1 (0x00007fd67aacf000) 
        libpulsecommon-16.1.so => /usr/lib64/pulseaudio/libpulsecommon-16.1.so (0x00007fd67aa48000) 
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fd67a9f5000) 
        libjack.so.0 => /lib64/libjack.so.0 (0x00007fd67a9a3000) 
        libX11.so.6 => /lib64/libX11.so.6 (0x00007fd67a85d000) 
        libsndfile.so.1 => /lib64/libsndfile.so.1 (0x00007fd67a7d9000) 
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fd67a7ae000) 
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fd67a6da000) 
        libvorbisenc.so.2 => /lib64/libvorbisenc.so.2 (0x00007fd67a62f000) 
        libFLAC.so.12 => /lib64/libFLAC.so.12 (0x00007fd67a5ec000) 
        libspeex.so.1 => /lib64/libspeex.so.1 (0x00007fd67a5d0000) 
        libopus.so.0 => /lib64/libopus.so.0 (0x00007fd67a575000) 
        libvorbis.so.0 => /lib64/libvorbis.so.0 (0x00007fd67a547000) 
        libogg.so.0 => /lib64/libogg.so.0 (0x00007fd67a53d000) 
        libXau.so.6 => /lib64/libXau.so.6 (0x00007fd67f4d6000) 
        libcap.so.2 => /lib64/libcap.so.2 (0x00007fd67a531000) 
        libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007fd67a3ef000) 
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fd67a3bd000) 
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fd67a30b000) 
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007fd67a2e7000) 
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fd67a2c1000)

I’ve made sure that I have openssl-1_1 installed.
But so far I havent had any luck with LD_PRELOAD or LD_LIBRARY_PATH.

Here’s the ssl libraries I have:

[FONT=monospace]
dustin@damascus ~/.l/s/S/s/c/Baldur's Gate II Enhanced Edition> ls-l/lib64/libssl*
-rwxr-xr-x 1 root root 428600 Oct  4 17:10 /lib64/libssl3.so* 
lrwxrwxrwx 1 root root     16 Oct  7 18:51 /lib64/libssl.so -> libssl.so.53.0.0* 
-r-xr-xr-x 1 root root 458096 Oct  1 11:24 /lib64/libssl.so.1.0.0* 
-rwxr-xr-x 1 root root 654984 Oct  1 10:49 /lib64/libssl.so.1.1* 
-rwxr-xr-x 1 root root 651304 Sep 15 16:47 /lib64/libssl.so.3* 
lrwxrwxrwx 1 root root     16 Oct  7 18:51 /lib64/libssl.so.53 -> libssl.so.53.0.0* 
-rwxr-xr-x 1 root root 414072 Oct  7 18:51 /lib64/libssl.so.53.0.0*

All suggestions welcome! Thank you!

[/FONT]

Baldurs gate uses an ancient openssl version, but steam provides only new/modern ones. This happened to other users too. Baldurs Gate/Steam don’t use the system libraries but the specialy for steam/the game downloaded ones. So you could only try to get old libraries and experiment with symlinks…
https://www.gog.com/forum/baldurs_gate_series/opensuse_undefined_symbol_ssl_export_keying_material
https://www.gog.com/forum/baldurs_gate_series/linux_version_openssl_mismatch

Thanks, I’ll poke around and see if i can find an exact v1.0.1. And maybe i’m misunderstanding the LDD, but isn’t it saying that the BaldursGateII executable is looking at the system library /lib64/libssl.so.1.0.0 ?

Also, I’m using the fish shell, I’ll try switching back to bash.

Thank you!

Okay, so I managed to find a version 1.0.1 rpm here: https://cbs.centos.org/koji/buildinfo?buildID=20473

I’ve extracted it, copied libssl and libcrypto to /usr/lib64/ and confirmed that it’s providing the SSL_export_keying_material.


nm -D --demangle /usr/lib64/libssl.so.1.0.1e | grep "SSL_export_keying_material" 
00000000000437e0 T **SSL_export_keying_material**
 

Confusingly, I can also confirm that the default library BaldursGateII is using also provides the SSL_export_keying_material.


[FONT=monospace]dustin@damascus:~/.local/share/Steam/steamapps/common/Baldur's Gate II Enhanced Edition> nm -D --demangle /lib64/libssl.so.1.0.0 | grep "SSL_export_keying_material" 
0000000000042c50 T **SSL_export_keying_material**
 

Maybe I was using LD_PRELOAD incorrectly? I am not sure, either way it is loading the 1.0.1e libraries, but seems to keep using the 1.0.0 library - which is providing what its asking for - not sure whats wrong.


dustin@damascus:~/.local/share/Steam/steamapps/common/Baldur's Gate II Enhanced Edition> LD_PRELOAD=/usr/lib64/libcrypto.so.1.0.1e:/usr/lib64/libssl.so.1.0.1e ldd ./BaldursGateII  
        linux-vdso.so.1 (0x00007ffcdef57000) 
        /usr/lib64/libcrypto.so.1.0.1e (0x00007fe2c2e00000) 
        /usr/lib64/libssl.so.1.0.1e (0x00007fe2c2a00000) 
        libopenal.so.1 => /lib64/libopenal.so.1 (0x00007fe2c6cf8000) 
        libGL.so.1 => /lib64/libGL.so.1 (0x00007fe2c2d73000) 
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe2c6cf1000) 
        librt.so.1 => /lib64/librt.so.1 (0x00007fe2c6cec000) 
        libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00007fe2c2d03000) 
        libcrypto.so.1.0.0 => /lib64/libcrypto.so.1.0.0 (0x00007fe2c2782000) 
        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007fe2c2cd4000) 
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fe2c6ce5000) 
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fe2c255a000) 
        libm.so.6 => /lib64/libm.so.6 (0x00007fe2c2476000) 
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe2c2cb3000) 
        libc.so.6 => /lib64/libc.so.6 (0x00007fe2c227b000) 
        libz.so.1 => /lib64/libz.so.1 (0x00007fe2c2c95000) 
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fe2c2228000) 
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fe2c2159000) 
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fe2c6cdd000) 
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fe2c2c7e000) 
        libpulse.so.0 => /lib64/libpulse.so.0 (0x00007fe2c2104000) 
        libportaudio.so.2 => /lib64/libportaudio.so.2 (0x00007fe2c20d5000) 
        libasound.so.2 => /lib64/libasound.so.2 (0x00007fe2c1fcf000) 
        /lib64/ld-linux-x86-64.so.2 (0x00007fe2c6e8d000) 
        libGLX.so.0 => /lib64/libGLX.so.0 (0x00007fe2c1f9d000) 
        libGLdispatch.so.0 => /lib64/libGLdispatch.so.0 (0x00007fe2c1ee6000) 
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fe2c31f0000) 
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fe2c6cd4000) 
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe2c1ed4000) 
        libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fe2c1b9d000) 
        libpulsecommon-16.1.so => /usr/lib64/pulseaudio/libpulsecommon-16.1.so (0x00007fe2c1b16000) 
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fe2c1ac3000) 
        libjack.so.0 => /lib64/libjack.so.0 (0x00007fe2c1a71000) 
        libX11.so.6 => /lib64/libX11.so.6 (0x00007fe2c192b000) 
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fe2c18fc000) 
        libsndfile.so.1 => /lib64/libsndfile.so.1 (0x00007fe2c1878000) 
        libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fe2c184d000) 
        libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fe2c1779000) 
        libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fe2c16c7000) 
        libvorbisenc.so.2 => /lib64/libvorbisenc.so.2 (0x00007fe2c161c000) 
        libFLAC.so.12 => /lib64/libFLAC.so.12 (0x00007fe2c15d9000) 
        libspeex.so.1 => /lib64/libspeex.so.1 (0x00007fe2c15bd000) 
        libopus.so.0 => /lib64/libopus.so.0 (0x00007fe2c1562000) 
        libvorbis.so.0 => /lib64/libvorbis.so.0 (0x00007fe2c1534000) 
        libogg.so.0 => /lib64/libogg.so.0 (0x00007fe2c2c74000) 
        libXau.so.6 => /lib64/libXau.so.6 (0x00007fe2c2c6f000) 
        libcap.so.2 => /lib64/libcap.so.2 (0x00007fe2c1528000) 
        libgcrypt.so.20 => /lib64/libgcrypt.so.20 (0x00007fe2c13e6000) 
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fe2c13b4000) 
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007fe2c1302000) 
        liblz4.so.1 => /lib64/liblz4.so.1 (0x00007fe2c12dc000) 
        libgpg-error.so.0 => /lib64/libgpg-error.so.0 (0x00007fe2c12b6000)
[/FONT]

Also tried symlinking, but it did not like the library versions:


> sudo cp /usr/lib64/libssl.so.1.0.0 /usr/lib64/libssl.so.1.0.0.bak
> sudo rm /usr/lib64/libssl.so.1.0.0
> sudo ln -s /usr/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.0.0
> ./BaldursGateII 
./BaldursGateII: /lib64/libssl.so.1.0.0: version `OPENSSL_1.0.1' not found (required by ./BaldursGateII)
./BaldursGateII: /lib64/libssl.so.1.0.0: version `OPENSSL_1.0.0' not found (required by ./BaldursGateII)

After much trial and error, this works! (in bash)


LD_PRELOAD="/home/dustin/.steam/bin/steam-runtime/lib/x86_64-linux-gnu/libssl.so.1.0.0" "/home/dustin/.local/share/Steam/steamapps/common/Baldur's Gate II Enhanced Edition/BaldursGateII" 

and in the launch options of steam:


LD_PRELOAD="/home/dustin/.steam/bin/steam-runtime/lib/x86_64-linux-gnu/libssl.so.1.0.0" %command%

Huzzah :slight_smile: