Subject: Re: bug#38054: mumble: "QSslSocket: cannot resolve <crypto funcs>", Certificate Expiry, segfault

From: Christopher Lemmer Webber <[email-masked]>
Date: Tue, 19 Nov 2019 14:00:20 -0500

Efraim Flashner writes:

> On Sun, Nov 03, 2019 at 11:04:05PM -0500, Ivan Vilata i Balaguer wrote:
>> Hi!  I'm using Mumble 1.2.19 from Guix commit 7f81cce3 on Debian Sid.  On
>> start, it logs the following messages:
>> 
>>     QSslSocket: cannot resolve CRYPTO_num_locks
>>     QSslSocket: cannot resolve CRYPTO_set_id_callback
>>     QSslSocket: cannot resolve CRYPTO_set_locking_callback
>>     QSslSocket: cannot resolve sk_free
>>     QSslSocket: cannot resolve sk_num
>>     QSslSocket: cannot resolve sk_pop_free
>>     QSslSocket: cannot resolve sk_value
>>     QSslSocket: cannot resolve SSL_library_init
>>     QSslSocket: cannot resolve SSL_load_error_strings
>>     QSslSocket: cannot resolve SSLv3_client_method
>>     QSslSocket: cannot resolve SSLv23_client_method
>>     QSslSocket: cannot resolve SSLv3_server_method
>>     QSslSocket: cannot resolve SSLv23_server_method
>>     QSslSocket: cannot resolve X509_STORE_CTX_get_chain
>>     QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
>>     QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
>>     QSslSocket: cannot resolve SSLeay
>>     QSslSocket: cannot call unresolved function CRYPTO_num_locks
>>     QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
>>     QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
>>     QSslSocket: cannot call unresolved function SSL_library_init
>>     QSslSocket: cannot call unresolved function SSLv23_client_method
>>     QSslSocket: cannot call unresolved function sk_num
>> 
>> Then it complains about "Certificate Expiry: Your certificate is about to
>> expire. You need to renew it, or you will no longer be able to connect to
>> servers you are registered on.".  If I proceed to connect it goes:
>> 
>>     OpenSSL Support: 1 (OpenSSL 1.1.1d  10 Sep 2019)
>>     Segmentation fault
>> 
>> and dies.  It is curious that `guix package -s openssl` reports version 1.1.1c
>> instead of 1.1.1d, which matches the Debian system's version of OpenSSL, so
>> Mumble may be trying to load system libraries instead of Guix's.
>> 
>> If I revert to a previous profile generation with a build of Mumble linked
>> against glibc 2.28 instead of 2.29, it doesn't print the errors and works
>> without issues.
>> 
>> Thank you very much!
>> 
>> -- 
>
> I'd have to guess that the error is that it's linked against openssl-1.1
> instead of openssl-1.1.
>
> I also noticed that there's a newer version of mumble out, 1,3.0, which
> builds against qt5. We should probably just go ahead and upgrade it.

I've also gotten this.  I have an older version of Mumble installed from
a previous generation and that one does still run.

I tried updating it here, but looks like it's upset about not finding
the (un)bundled speex... weird because it must not have been bothered by
that before.

Incomplete patch attached.  I'm unsure if switching from qt-4 to qtbase
is the right way to upgrade to QT 5 or not?  I'm guessing so?

diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 81e710a536..82ebe48931 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -377,15 +377,15 @@ address of one of the participants.")
 (define-public mumble
   (package
     (name "mumble")
-    (version "1.2.19")
+    (version "1.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://mumble.info/snapshot/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh"))
-              (patches (search-patches "mumble-1.2.19-abs.patch"))
+                "03dqg5yf6d7ilc1wydpshnv1ndssppcbadqcq20jm5j4fdaf53cs"))
+              ;; (patches (search-patches "mumble-1.2.19-abs.patch"))
               (modules '((guix build utils)))
               (snippet
                `(begin
@@ -474,7 +474,7 @@ address of one of the participants.")
        ("speech-dispatcher" ,speech-dispatcher)
        ("libx11" ,libx11)
        ("libxi" ,libxi)
-       ("qt-4" ,qt-4)
+       ("qt-4" ,qtbase)
        ("alsa-lib" ,alsa-lib)
        ("pulseaudio" ,pulseaudio)))
     (native-inputs