From cbb0b363ea272b452654b3dd918718e749448a2b Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 10 Mar 2023 13:05:59 +0100 Subject: Fix exit crash related to QObject::thread() In the deletion handler registered by getWrapperForQObject(), add a check whether Python is still initialized. Fixes: PYSIDE-2254 Pick-to: 6.4 Change-Id: I20d221b57fc9d0aaa7ef4067a79fb0c3bb4ef844 Reviewed-by: Shyamnath Premnadh --- sources/pyside6/libpyside/pyside.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'sources/pyside6/libpyside/pyside.cpp') diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp index e92e0bfa4..42b7725cc 100644 --- a/sources/pyside6/libpyside/pyside.cpp +++ b/sources/pyside6/libpyside/pyside.cpp @@ -632,6 +632,11 @@ namespace PySide static void invalidatePtr(any_t *object) { + // PYSIDE-2254: Guard against QObjects outliving Python, for example the + // adopted main thread as returned by QObjects::thread(). + if (Py_IsInitialized() == 0) + return; + Shiboken::GilState state; SbkObject *wrapper = Shiboken::BindingManager::instance().retrieveWrapper(object); -- cgit v1.2.3