Missing entry point OPENSSL_sk_new_reserve

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Missing entry point OPENSSL_sk_new_reserve

Happy Hondje
Using PyQt5 5.13.0 on Python 3.7 / Windows 10, I have come across a missing entry point error. It was triggered in my program through QNetworkManager/QNetworkRequest with a https link.

> The procedure entry point OPENSSL_sk_new_reserve could not be located in the dynamic link
> library C:\Program Files\Python37\lib\site-packages\PyQt5\Qt\bin\libssl-1_1-x64.dll. 

I have removed PyQt5 (+sip) and reinstalled them without result (just to make sure it wasn't a botched upgrade) with no result, so I also tried uninstalling and installing older versions of PyQt5 to narrow down the problem.

PyQt5 version 5.12 still works as it used to, but unfortunately that version ot Qt still has some other issues that were finally fixed in 5.13. (As do some even older ones.) As such, I cannot really rely on that version of Qt.

Is it possible to have the PyQt5 5.13 package fixed so that https links will work once more?

Regards, and thank you in advance,

J. Wester

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Missing entry point OPENSSL_sk_new_reserve

Phil Thompson-5
On 07/09/2019 23:23, J. Wester wrote:

> Using PyQt5 5.13.0 on Python 3.7 / Windows 10, I have come across a
> missing
> entry point error. It was triggered in my program through
> QNetworkManager/QNetworkRequest with a https link.
>
>> The procedure entry point OPENSSL_sk_new_reserve could not be located
>> in
> the dynamic link
>> library C:\Program
> Files\Python37\lib\site-packages\PyQt5\Qt\bin\libssl-1_1-x64.dll.
>
> I have removed PyQt5 (+sip) and reinstalled them without result (just
> to
> make sure it wasn't a botched upgrade) with no result, so I also tried
> uninstalling and installing older versions of PyQt5 to narrow down the
> problem.
>
> PyQt5 version 5.12 still works as it used to, but unfortunately that
> version ot Qt still has some other issues that were finally fixed in
> 5.13.
> (As do some even older ones.) As such, I cannot really rely on that
> version
> of Qt.
>
> Is it possible to have the PyQt5 5.13 package fixed so that https links
> will work once more?

Do you have a short test script that demonstrates the problem?

Phil
_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Missing entry point OPENSSL_sk_new_reserve

Happy Hondje
No, I don't, and it isn't for a lack of trying. I have spent the past few hours trying to reproduce every bit of relevant code, but I can't seem to get it to recreate in a small testcase. (The basic snippet exhibiting the bug is literally the only time anything remotely involving a Qt socket is done in the program...)

On a positive note, I had missed one particular line in my programs debug logs that I had originally missed in the messy traceback:

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

Unfortunately, this doesn't tell us anything new: looking at the Qt source code it shows that every mention of that error message is for a failing check against supportsSsl(), and assuming I read all the defines right, that would likely be implemented as 'return ensureLibraryLoaded()'... which the wonderful dialog box already confirmed for me.

Yet tracing it back further, I'd expect to find it in the implementation of q_resolveOpenSslSymbols in qsslsocket_openssl_symbols.cpp, but I don't see it trying to access the 'OPENSSL_sk_new_reserve' entry point at all. Hell, I don't see 'OPENSSL_sk_new_reserve' mentioned anywhere in the Qt 5.13 source... so I have absolutely no clue why it is trying to load that. Then again, making sense of the #define spaghetti that is supporting all those OpenSSL versions is way beyond my mere capabilities.

Maybe I'll have some more luck tracking this down after a good nights rest. Frankly, I am really hoping for it to be some really stupid mistake on my part at this point. :-)

Thank you for the assistance thus far. 
J. Wester

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
Reply | Threaded
Open this post in threaded view
|

Re: Missing entry point OPENSSL_sk_new_reserve

Tobias Rzepka-2

Hello together,

I had the same problem after upgrading to PyQt5 5.13.0 on Python 3.7.3 when I start eric6. The problem is, that Python 3.7.3 and PyQt5 5.13.0 both have their own libssl-1_1-x64.dll (located in .\DLL and .\Lib\site-packages\PyQt5\Qt\bin) but in different versions. Deleting one of them or overwrite one version with the other make it work, but that's no real solution:

Just upgrade Python to 3.7.4 if possible. There the versions are mostly identical and Python has renamed it to libssl-1_1.dll so no DLL-naming collision occurs anymore (maybe with the next update ;-)

Tobias

J. Wester schrieb am 08.09.2019 um 08:02:
No, I don't, and it isn't for a lack of trying. I have spent the past few hours trying to reproduce every bit of relevant code, but I can't seem to get it to recreate in a small testcase. (The basic snippet exhibiting the bug is literally the only time anything remotely involving a Qt socket is done in the program...)

On a positive note, I had missed one particular line in my programs debug logs that I had originally missed in the messy traceback:

qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

Unfortunately, this doesn't tell us anything new: looking at the Qt source code it shows that every mention of that error message is for a failing check against supportsSsl(), and assuming I read all the defines right, that would likely be implemented as 'return ensureLibraryLoaded()'... which the wonderful dialog box already confirmed for me.

Yet tracing it back further, I'd expect to find it in the implementation of q_resolveOpenSslSymbols in qsslsocket_openssl_symbols.cpp, but I don't see it trying to access the 'OPENSSL_sk_new_reserve' entry point at all. Hell, I don't see 'OPENSSL_sk_new_reserve' mentioned anywhere in the Qt 5.13 source... so I have absolutely no clue why it is trying to load that. Then again, making sense of the #define spaghetti that is supporting all those OpenSSL versions is way beyond my mere capabilities.

Maybe I'll have some more luck tracking this down after a good nights rest. Frankly, I am really hoping for it to be some really stupid mistake on my part at this point. :-)

Thank you for the assistance thus far. 
J. Wester

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt

_______________________________________________
PyQt mailing list    [hidden email]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt