- 
    Bug 
- 
    Resolution: Duplicate
- 
     Not Evaluated Not Evaluated
- 
    None
- 
    5.11.2
- 
    None
- 
    OpenSSL 1.1.1
- 
        611423099667d2dc18e6fb63967cbbfd8a65829c
A program linked with openssl 1.1.1 + libQt5Network.so.5.11.2 freezes during startup because the constructor of globalData, defined in src/network/ssl/qsslsocket.cpp:353, causes a bunch of methods to be called, eventually calling globalData(). This is the backtrace:
#0  (anonymous namespace)::Q_QGS_globalData::innerFunction ()
    at ssl/qsslsocket.cpp:353
#1  0x0000000801e20cf1 in QGlobalStatic<QSslSocketGlobalData, (anonymous namespace)::Q_QGS_globalData::innerFunction(), (anonymous namespace)::Q_QGS_globalData::guard>::operator()() (
    this=0x801e64508 <globalData>)
    at ../../include/QtCore/../../src/corelib/global/qglobalstatic.h:138
#2  0x0000000801e20d5b in QSslSocketPrivate::setDefaultSupportedCiphers (ciphers=...)
    at ssl/qsslsocket.cpp:2126
#3  0x0000000801e3a736 in QSslSocketPrivate::resetDefaultCiphers ()
    at ssl/qsslsocket_openssl.cpp:471
#4  0x0000000801e41eee in QSslSocketPrivate::ensureCiphersAndCertsLoaded ()
    at ssl/qsslsocket_openssl11.cpp:120
#5  0x0000000801e3907b in QSslSocketPrivate::ensureInitialized ()
    at ssl/qsslsocket_openssl.cpp:416
#6  0x0000000801e13da2 in QSslCertificatePrivate::QSslCertificatePrivate (this=0x8055a3d30)
    at ssl/qsslcertificate_p.h:86
#7  0x0000000801e12a76 in QSslCertificate::QSslCertificate (this=0x8055c1208, data=..., format=QSsl::Pem)
    at ssl/qsslcertificate.cpp:157
#8  0x0000000801e1634e in QSslConfigurationPrivate::QSslConfigurationPrivate (this=0x8055c1200)
    at ssl/qsslconfiguration_p.h:87
#9  0x0000000801e23cf7 in QSslSocketGlobalData::QSslSocketGlobalData (
    this=0x801e64510 <(anonymous namespace)::Q_QGS_globalData::innerFunction()::holder>)
    at ssl/qsslsocket.cpp:342
#10 0x0000000801e23165 in (anonymous namespace)::Q_QGS_globalData::innerFunction()::Holder::Holder() (
    this=0x801e64510 <(anonymous namespace)::Q_QGS_globalData::innerFunction()::holder>)
    at ssl/qsslsocket.cpp:353
#11 0x0000000801e23116 in (anonymous namespace)::Q_QGS_globalData::innerFunction ()
    at ssl/qsslsocket.cpp:353
Notice that frame #0 and #11 are the same.
src/network/ssl/qsslsocket_mac.cpp contains this comment:
void QSslSocketPrivate::ensureInitialized()
 {
 const QMutexLocker locker(qt_securetransport_mutex);
 if (s_loadedCiphersAndCerts)
 return;
// We have to set it before setDefaultSupportedCiphers,
 // since this function can trigger static (global)'s initialization
 // and as a result - recursive ensureInitialized call
 // from QSslCertificatePrivate's ctor.
 s_loadedCiphersAndCerts = true;
although not the same, something similar is happening in this case too.
- duplicates
- 
                    QTBUG-70956 Program hangs in QSslCertificate / futex -           
- Closed
 
-         
- 
                     QTBUG-67463
        QSslSocket must support TLS 1.3. QTBUG-67463
        QSslSocket must support TLS 1.3.-         
- Closed
 
-         
| For Gerrit Dashboard: QTBUG-71446 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V | 
| 244079,5 | Fix supportsSsl() to make it more consistent | 5.12 | qt/qtbase | Status: MERGED | +2 | 0 |