[PyQt] pyqt5_enable_new_onexit_scheme vs. threads

Zach Pincus zpincus at gmail.com
Wed Sep 18 18:12:03 BST 2019


Hello,

As requested, I tested out  pyqt5_enable_new_onexit_scheme(True) with
my application on PyQt 5.13.1.

At exit, I get the following error:
QThread: Destroyed while thread is still running
and a segfault.

The application spins up a background QThread that currently has no
provision for exiting on termination. (It exists to upload textures to
an offscreen OpenGL context, and otherwise is just blocked waiting for
a new texture to upload.) Without the new onexit scheme, this works
just fine.

I'm sure this reveals a design flaw in the original application (the
thread should probably try to exit cleanly, rather than just die
during application exit), but this is at least one case where the new
onexit scheme will cause errors to crop up that did not exist before.

What would be the best way to make the thread exit cleanly? At atexit
python callback that sets a flag to make the thread exit and then
waits on the thread? Or connecting (something?) to the aboutToQuit
signal that does the same? Or should the new onexit scheme not touch
threads in the first place?

Thanks,
Zach


More information about the PyQt mailing list