Details
Description
We have a class with a QNetworkAccessManager member. After the update from Qt 6.7 to 6.8 we now run into this assert on destruction (but just on Linux, not e.g. Windows):
(gdb) thread apply all bt Thread 4 (Thread 0x7fffeea00700 (LWP 6939)): #0 0x00007ffff3836387 in raise () from /lib64/libc.so.6 #1 0x00007ffff3837a78 in abort () from /lib64/libc.so.6 #2 0x00007ffff6b8061d in qAbort() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #3 0x00007ffff6b82f62 in qt_message(QtMsgType, QMessageLogContext const&, char const*, __va_list_tag*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #4 0x00007ffff6b88d44 in QMessageLogger::fatal(char const*, ...) const () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #5 0x00007ffff6b80701 in qt_assert_x(char const*, char const*, char const*, int) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #6 0x00007ffff6b1214d in QCoreApplicationPrivate::checkReceiverThread(QObject*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #7 0x00007ffff6b148c8 in doNotify(QObject*, QEvent*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #8 0x00007ffff6b14829 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #9 0x00007ffff6a557cd in QObjectPrivate::setParent_helper(QObject*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #10 0x00007ffff6a521a9 in QObject::~QObject() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #11 0x00007ffff7a39442 in QTcpSocket::~QTcpSocket() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #12 0x00007ffff7938315 in QSslSocket::~QSslSocket() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #13 0x00007ffff7938342 in QSslSocket::~QSslSocket() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #14 0x00007ffff79a4cec in QHttpNetworkConnectionPrivate::~QHttpNetworkConnectionPrivate() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #15 0x00007ffff79a4ea2 in QHttpNetworkConnectionPrivate::~QHttpNetworkConnectionPrivate() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #16 0x00007ffff6a521b9 in QObject::~QObject() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #17 0x00007ffff79dc2fe in QNetworkAccessCachedHttpConnection::~QNetworkAccessCachedHttpConnection() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #18 0x00007ffff79f896a in QNetworkAccessCache::clear() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #19 0x00007ffff79fd264 in QNetworkAccessCache::~QNetworkAccessCache() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #20 0x00007ffff79fd312 in QNetworkAccessCache::~QNetworkAccessCache() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #21 0x00007ffff6914caf in QThreadStorageData::finish(void**) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #22 0x00007ffff69b3a59 in QThreadPrivate::finish(void*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #23 0x00007ffff69b3876 in QScopeGuard<QThreadPrivate::start(void*)::$_0>::~QScopeGuard() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #24 0x00007ffff6980ffe in __cxxabiv1::(anonymous namespace)::run_dtors(void*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #25 0x00007ffff4407ca2 in __nptl_deallocate_tsd () from /lib64/libpthread.so.0 #26 0x00007ffff4407eb3 in start_thread () from /lib64/libpthread.so.0 #27 0x00007ffff38feb0d in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7fffef400700 (LWP 6938)): #0 0x00007ffff38f3e9f in ppoll () from /lib64/libc.so.6 #1 0x00007ffff69b209f in qt_safe_poll(pollfd*, unsigned long, QDeadlineTimer) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #2 0x00007ffff69b698d in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #3 0x00007ffff6b15636 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #4 0x00007ffff6a14c61 in QThread::exec() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #5 0x00007ffff69b3673 in QThreadPrivate::start(void*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #6 0x00007ffff4407ea5 in start_thread () from /lib64/libpthread.so.0 #7 0x00007ffff38feb0d in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7fffefe00700 (LWP 6937)): #0 0x00007ffff7a2dee0 in QAbstractSocketPrivate::canReadNotification() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #1 0x00007ffff7a37052 in QReadNotifier::event(QEvent*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #2 0x00007ffff6b14829 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #3 0x00007ffff69b5973 in QEventDispatcherUNIXPrivate::activateSocketNotifiers() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 --Type <RET> for more, q to quit, c to continue without paging-- #4 0x00007ffff69b69fc in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #5 0x00007ffff6b15636 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #6 0x00007ffff6a14c61 in QThread::exec() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #7 0x000055555573d89a in Qtc::Server::run (this=0x7fffffffe140) at src/server.cpp:569 #8 0x00007ffff69b3673 in QThreadPrivate::start(void*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #9 0x00007ffff4407ea5 in start_thread () from /lib64/libpthread.so.0 #10 0x00007ffff38feb0d in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7ffff7e2c940 (LWP 6933)): #0 0x00007ffff440bde2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007ffff69582a9 in QWaitConditionPrivate::wait(QDeadlineTimer) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #2 0x00007ffff6915270 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #3 0x00007ffff69b4be2 in QThread::wait(QDeadlineTimer) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #4 0x00007ffff7a050d4 in QNetworkAccessManagerPrivate::destroyThread() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #5 0x00007ffff7a0518d in QNetworkAccessManagerPrivate::~QNetworkAccessManagerPrivate() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #6 0x00007ffff7a05222 in QNetworkAccessManagerPrivate::~QNetworkAccessManagerPrivate() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #7 0x00007ffff6a521b9 in QObject::~QObject() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #8 0x00007ffff7a00704 in QNetworkAccessManager::~QNetworkAccessManager() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #9 0x00007ffff7a00772 in QNetworkAccessManager::~QNetworkAccessManager() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Network.so.6 #10 0x00007ffff6a5564e in QObjectPrivate::deleteChildren() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #11 0x00007ffff6a52184 in QObject::~QObject() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #12 0x00005555556f2038 in AuthTest::challengeResourceOwnerPasswordFlowSuccess (this=<optimized out>) at test_auth.cpp:622 #13 0x00007ffff6b1ea35 in QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #14 0x00007ffff6b24530 in QMetaMethod::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Core.so.6 #15 0x00007ffff7faa0da in QTest::TestMethods::invokeTestOnData(int) const () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Test.so.6 #16 0x00007ffff7fab875 in QTest::TestMethods::invokeTest(int, QLatin1String, std::__1::optional<QTest::WatchDog>&) const () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Test.so.6 #17 0x00007ffff7facfca in QTest::TestMethods::invokeTests(QObject*) const () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Test.so.6 #18 0x00007ffff7fae42d in QTest::qRun() () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Test.so.6 #19 0x00007ffff7fad818 in QTest::qExec(QObject*, int, char**) () from /local/ssd/cullmann/build/libqtc.default/usr/lib/libQt6Test.so.6 #20 0x00005555557065dd in main (argc=1, argv=0x7fffffffe528) at test_auth.cpp:2199
Attachments
For Gerrit Dashboard: QTBUG-130341 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
597695,17 | QThread/Unix: refactor to split QThreadPrivate::finish() in two phases | dev | qt/qtbase | Status: MERGED | +2 | 0 |
600385,3 | QThread/Unix: refactor to split QThreadPrivate::finish() in two phases | 6.8 | qt/qtbase | Status: MERGED | +2 | +1 |
602375,14 | QThread/Unix: do clean up the QAdoptedThread for the main thread | dev | qt/qtbase | Status: MERGED | +2 | 0 |
604058,3 | QThread/Unix: do clean up the QAdoptedThread for the main thread | 6.8 | qt/qtbase | Status: MERGED | +2 | +1 |