Crash-on-exit after call to app.processEvents()

Raymond Osborn <[email protected]> Mon, 25 May 2020 12:48:01 -0500
Newsgroups gmane.comp.python.pyqt-pykde
Message-ID <[email protected]>
--Apple-Mail=_7382F7A9-1F6F-44D0-81DD-DFA389B35B1D
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

I added a call to QtWidgets.QApplication.instance().processEvents() in =
order to force adjustResize() to work when switching tabs (that=E2=80=99s =
another story). It succeeded in fixing my resize issue, but now it =
triggers a segfault when I exit the application. This seemed to be =
related to the bug described in =
https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.html#crashes-=
on-exit =
<https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.html#crashes=
-on-exit>. One fix, suggested by @ekhumoro on stackoverflow =
(https://stackoverflow.com/questions/59120337/why-does-pyqt-sometimes-cras=
h-on-exit =
<https://stackoverflow.com/questions/59120337/why-does-pyqt-sometimes-cras=
h-on-exit>) was to delete the main window and the app first, but that =
doesn=E2=80=99t seem to fix it. I am running PyQt 5.12 because that is =
the last version supported by conda, so I can=E2=80=99t test the =
one-exit fix in v5.13, and my users probably wouldn=E2=80=99t have it =
installed anyway. It happens on Macs and linux.

What I am asking is if there are additional things to try in addition to =
@ekhumoro=E2=80=99s suggestion? Basically he suggests doing something =
like:

def main():
    app =3D QApplication(sys.argv)
    main_window =3D MainWindow()
    main_window.show()
    app.exec_()
    # ensure correct deletion order
    del main_window, app
Does anyone understand why the crash only occurs if I have calls to =
processEvents() in the code? It never happens when I remove them.

Thanks,
Ray

=20=

--Apple-Mail=_7382F7A9-1F6F-44D0-81DD-DFA389B35B1D
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D"">I =
added a call to&nbsp;QtWidgets.QApplication.instance().processEvents() =
in order to force adjustResize() to work when switching tabs (that=E2=80=99=
s another story). It succeeded in fixing my resize issue, but now it =
triggers a segfault when I exit the application. This seemed to be =
related to the bug described in&nbsp;<a =
href=3D"https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.html#=
crashes-on-exit" =
class=3D"">https://www.riverbankcomputing.com/static/Docs/PyQt5/gotchas.ht=
ml#crashes-on-exit</a>. One fix, suggested by @ekhumoro on stackoverflow =
(<a =
href=3D"https://stackoverflow.com/questions/59120337/why-does-pyqt-sometim=
es-crash-on-exit" =
class=3D"">https://stackoverflow.com/questions/59120337/why-does-pyqt-some=
times-crash-on-exit</a>) was to delete the main window and the app =
first, but that doesn=E2=80=99t seem to fix it. I am running PyQt 5.12 =
because that is the last version supported by conda, so I can=E2=80=99t =
test the one-exit fix in v5.13, and my users probably wouldn=E2=80=99t =
have it installed anyway. It happens on Macs and linux.<div class=3D""><br=
 class=3D""></div><div class=3D"">What I am asking is if there are =
additional things to try in addition to @ekhumoro=E2=80=99s suggestion? =
Basically he suggests doing something like:</div><div class=3D""><br =
class=3D""></div><div class=3D""><pre class=3D"lang-py prettyprinted =
prettyprint" style=3D"margin-top: 0px; margin-bottom: 1em; padding: 12px =
8px; border: 0px; font-family: Consolas, Menlo, Monaco, &quot;Lucida =
Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans =
Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier =
New&quot;, monospace, sans-serif; font-stretch: inherit; line-height: =
inherit; font-size: 13px; vertical-align: baseline; box-sizing: inherit; =
width: auto; max-height: 600px; overflow: auto; border-top-left-radius: =
3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; =
border-bottom-left-radius: 3px; color: rgb(36, 39, 41); word-wrap: =
normal; caret-color: rgb(36, 39, 41);"><code style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, =
&quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu =
Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier =
New&quot;, monospace, sans-serif; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; white-space: inherit;" =
class=3D""><span class=3D"kwd" style=3D"margin: 0px; padding: 0px; =
border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--blue-800);">def</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);"> main</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">():</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">
    app </span><span class=3D"pun" style=3D"margin: 0px; padding: 0px; =
border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">=3D</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);"> </span><span class=3D"typ" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: rgb(43, 145, =
175);">QApplication</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">(</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">sys</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">.</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">argv</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">)</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">
    main_window </span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">=3D</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);"> </span><span class=3D"typ" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: rgb(43, 145, =
175);">MainWindow</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">()</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">
    main_window</span><span class=3D"pun" style=3D"margin: 0px; padding: =
0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">.</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">show</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">()</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">
    app</span><span class=3D"pun" style=3D"margin: 0px; padding: 0px; =
border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">.</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">exec_</span><span class=3D"pun" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">()</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">
    </span><span class=3D"com" style=3D"margin: 0px; padding: 0px; =
border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-400);"># ensure correct deletion order</span><span =
class=3D"pln" style=3D"margin: 0px; padding: 0px; border: 0px; =
font-family: inherit; font-style: inherit; font-variant-caps: inherit; =
font-stretch: inherit; line-height: inherit; vertical-align: baseline; =
box-sizing: inherit; color: var(--black-750);">
    </span><span class=3D"kwd" style=3D"margin: 0px; padding: 0px; =
border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--blue-800);">del</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);"> main_window</span><span class=3D"pun" style=3D"margin:=
 0px; padding: 0px; border: 0px; font-family: inherit; font-style: =
inherit; font-variant-caps: inherit; font-stretch: inherit; line-height: =
inherit; vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);">,</span><span class=3D"pln" style=3D"margin: 0px; =
padding: 0px; border: 0px; font-family: inherit; font-style: inherit; =
font-variant-caps: inherit; font-stretch: inherit; line-height: inherit; =
vertical-align: baseline; box-sizing: inherit; color: =
var(--black-750);"> app</span></code></pre><div class=3D"">Does anyone =
understand why the crash only occurs if I have calls to processEvents() =
in the code? It never happens when I remove them.</div></div><div =
class=3D""><br class=3D""></div><div class=3D"">Thanks,</div><div =
class=3D"">Ray</div><div class=3D""><br class=3D""></div><div =
class=3D"">&nbsp;</div></body></html>=

--Apple-Mail=_7382F7A9-1F6F-44D0-81DD-DFA389B35B1D--