Re: Qt 5.13: Segfault on exit with Windows + QtWebEngine
Florian Bruhin <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jul 17, 2019 at 04:58:22PM +0100, Phil Thompson wrote: > On 17/07/2019 12:48, Florian Bruhin wrote: > > On Wed, Jul 17, 2019 at 11:54:10AM +0100, Phil Thompson wrote: > > > On 13/07/2019 16:43, Florian Bruhin wrote: > > > > With a quite minimal QtWebEngine example like this: > > > > > > > > from PyQt5.QtWebEngineWidgets import QWebEngineProfile > > > > from PyQt5.QtWidgets import QApplication > > > > from PyQt5.QtCore import QTimer > > > > > > > > qapp = QApplication([]) > > > > p = QWebEngineProfile() > > > > QTimer.singleShot(500, qapp.quit) > > > > qapp.exec_() > > > > > > > > I get a segfault on exit with Python 3.7.4 and PyQt5/PyQtWebEngine > > > > 5.13.0 > > > > on Windows 10. > > > > > > > > When I downgrade to PyQt5 5.12.3 and PyQtWebEngine 5.12.1 things work > > > > fine. > > > > > > > > Unfortunately I haven't been able to get a reliable stacktrace. Here are > > > > some > > > > examples of the stacks I got: > > > > https://paste.the-compiler.org/view/5774da86 > > > > I don't think they really make sense though. > > > > > > I can't reproduce this - although I am using Python v3.7.0. > > > > I can reproduce it with Python 3.7.0 as well (both 32 and 64-bit). > > > > Note that I don't get a "Python.exe has stopped" window, but "echo $?" > > shows > > False in Powershell. > > > > Similarly, running it from Python: > > > > subprocess.run([sys.executable, 'segv.py'], check=True) > > > > Gives me: > > > > subprocess.CalledProcessError: Command '['...\\python.exe', > > 'segv.py']' returned non-zero exit status 3221225477. > > > > Where 3221225477 is 0xC0000005, i.e. an access violation. > > I can reproduce that. However if I build the latest PyQt against Qt v5.12.4 > the problem goes away, which suggests a Qt problem. I can only suggest > playing with things to try and get things destroyed in a different order, > then I might be able to add a workaround. Using qapp as a context manager seems to fix it. Putting everything into a run() function (without "global qapp") and calling that also does. In other words, if the QApplication is destroyed *before* whatever QtWebEngine initializes internally it seems to not segfault. That seems the exact opposite of what's recommended here though: https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.html#crashes-on-exit Florian -- https://www.qutebrowser.org | [email protected] (Mail/XMPP) GPG: 916E B0C8 FD55 A072 | https://the-compiler.org/pubkey.asc I love long mails! | https://email.is-not-s.ms/ _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE4E5WAAJAG47w528KkW6wyP1VoHIFAl0vSHAACgkQkW6wyP1V oHK9CBAAsF1+OHiWurlrNhuiCFXLTotCLYuq09UX6NdPgjHZ95K4buvQQDjVlcth 9JPLBmu7pf3sJXy9n2iaZmOyxx7EOmhutqaJqbP/IT2TqQZC+QsmOpTTs3T8UIHB UIDjaUttY6ufDojbb5ZS+MSPgqZxquEmIXRDSduS6rTS0HS/RKR2iJBZvKB/Gsb8 ASB2Zory5v8Mk5yKoVeMJb4Eo9qHuaMarB/n8m71cz+1wsBmr2vC+E8FFb6B/q3l 8GcpUfLWORlv3NuqCY6jcivIPJ9IHu9VIuPkFv+qqG0X+SS7Ta2a3VU1vB2ecB5N 696Uy9EW4OB9i8XeVa1sfmZk/DwDFnlojdmxTXddrx8vqaNiSf7kIWBYK7u+YUs0 eOmSsbFLLw7NUrHCatPyTVOvo4kEKvn3QrgIJNX02XopOH0Bz4SgIgJo0gFy0KFg +LJCHkNdbdPYw4b9CDzJeLZVgYlP+/kCPsdolD4VoUr/tUPvtrN685wYXXeRnASZ dnTtOrMM4Jfp6ieMC7Nlshdei5Ik2fn3j1kMtIvJvAVpcsvgx6kEAidi5OTcgL7C YrsI1Qr+G8sALUYx1PKJv8CEhi71w9YvpTGv2vOG8V7y4tSE/1QwQ8XlqOaN0EnP /R/n+HM362LrQyH799gi4L9TVyo1LPrQKqhBvUd3Tug6PDmNdzY= =YfLa -----END PGP SIGNATURE-----