Saturday 28 April 2018

Fixing Saleae Logic 1.2.18 for Fedora 27

One of my favourite work tools is the Saleae Logic analyzer, since version 1.2.10 running it on Fedora Linux is not so straight forward. For example trying to run version 1.2.18 (64 bits) in Linux 27 will return the following error
$ ./Logic 
Root Path: /sandbox/opt/Logic 1.2.18 (64-bit)  [ /home/build/ob_logic/Source/Environment.cpp; Environment; 158 ]
Writeable Root Path: /sandbox/opt/Logic 1.2.18 (64-bit)  [ /home/build/ob_logic/Source/Environment.cpp; Environment; 185 ]
Temp Folder path: /tmp  [ /home/build/ob_logic/Source/Environment.cpp; Environment; 191 ]
Release Mode; analyzer path is /sandbox/opt/Logic 1.2.18 (64-bit)/Analyzers  [ /home/build/ob_logic/Source/Environment.cpp; Environment; 201 ]
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot resolve ERR_free_strings
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_cleanup
qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_init
qt.network.ssl: QSslSocket: cannot resolve sk_new_null
qt.network.ssl: QSslSocket: cannot resolve sk_push
qt.network.ssl: QSslSocket: cannot resolve sk_free
qt.network.ssl: QSslSocket: cannot resolve sk_num
qt.network.ssl: QSslSocket: cannot resolve sk_pop_free
qt.network.ssl: QSslSocket: cannot resolve sk_value
qt.network.ssl: QSslSocket: cannot resolve SSL_library_init
qt.network.ssl: QSslSocket: cannot resolve SSL_load_error_strings
qt.network.ssl: QSslSocket: cannot resolve SSL_get_ex_new_index
qt.network.ssl: QSslSocket: cannot resolve SSLv2_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_client_method
qt.network.ssl: QSslSocket: cannot resolve SSLv2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSLv23_server_method
qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get_chain
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
qt.network.ssl: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
qt.network.ssl: QSslSocket: cannot resolve SSLeay
qt.network.ssl: QSslSocket: cannot resolve SSLeay_version
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_num_locks
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
qt.network.ssl: QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function sk_num
Segmentation fault (core dumped)
This error is related to the SSL dynamic library that Qt5 is looking for is not compatible with the version of libssl installed by Fedora
$ ls -l /usr/lib/libssl*
-rwxr-xr-x. 1 root root 376184 Mar  9 17:10 /usr/lib/libssl3.so
lrwxrwxrwx. 1 root root     16 Apr  5 18:49 /usr/lib/libssl.so.10 -> libssl.so.1.0.2o
-rwxr-xr-x. 1 root root 451552 Apr  5 18:49 /usr/lib/libssl.so.1.0.2o
lrwxrwxrwx. 1 root root     16 Apr  3 13:17 /usr/lib/libssl.so.1.1 -> libssl.so.1.1.0h
-rwxr-xr-x. 1 root root 462000 Apr  3 13:17 /usr/lib/libssl.so.1.1.0h
One way to overcome this issue is to create a symbolic link to the right library verison in the same directory where Logic is installed When I look into my lib I have these versions of libssl installed
$ ls -l /usr/lib64/libssl*
-rwxr-xr-x. 1 root root 340880 Mar  9 17:09 /usr/lib64/libssl3.so
lrwxrwxrwx. 1 root root     16 Apr  3 13:18 /usr/lib64/libssl.so -> libssl.so.1.1.0h
lrwxrwxrwx. 1 root root     16 Apr  5 18:48 /usr/lib64/libssl.so.10 -> libssl.so.1.0.2o
-rwxr-xr-x. 1 root root 449536 Apr  5 18:48 /usr/lib64/libssl.so.1.0.2o
lrwxrwxrwx. 1 root root     16 Apr  3 13:18 /usr/lib64/libssl.so.1.1 -> libssl.so.1.1.0h
-rwxr-xr-x. 1 root root 451880 Apr  3 13:18 /usr/lib64/libssl.so.1.1.0h
As you can see linssl.so is pointing to version 1.1 of the library but Saleae Logic expects to link to 1.0, so finally I create a symbolic link to the 1.0 version of the library in the same directory where I run Logic, and Logic will find it first.
$ ln -s /usr/lib64/libssl.so.10 libssl.so

1 comment:

Anonymous said...

I had to install compat-openssl10 first so libssl 1.0 was available.