Re: pyqt5_enable_new_onexit_scheme vs. threads
Zach Pincus <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <CAD-Q3rnmoCf0QXSTP2hOz22V-wD9UtKyeh+Z29ayLvyz=womew@mail.gmail.com> |
Thanks, Phil! That makes sense. On Wed, Sep 18, 2019 at 4:07 PM Phil Thompson <[email protected]> wrote: > > On 18/09/2019 18:12, Zach Pincus wrote: > > 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? > > The latter option would be trivial to implement. Given that deleting a > running thread is guaranteed to cause a crash then it makes sense to > avoid that if possible - even if the root cause is an application design > bug. > > Phil _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt