Bug 509947 - Krita sometimes stuck when opening a file, caused by LogDockerDock
Summary: Krita sometimes stuck when opening a file, caused by LogDockerDock
Status: CONFIRMED
Alias: None
Product: krita
Classification: Applications
Component: * Unknown (other bugs)
Version First Reported In: git master (please specify the git hash!)
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-25 19:27 UTC by Ming Chuan
Modified: 2025-10-22 06:25 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ming Chuan 2025-09-25 19:27:42 UTC
SUMMARY

This is on wayland qt6, unsure if that matters. Please see the stacktrace, it says a lot.

Probably a very recent (~1 month) regression as I didn't experience this before

STEPS TO REPRODUCE
1. Open krita
2. Open a file
3. Krita stucks
4. Use `kill -ABRT` to generate a coredump

OBSERVED RESULT


EXPECTED RESULT


SOFTWARE/OS VERSIONS

Krita: master branch at 2025-09-17

ADDITIONAL INFORMATION
```
#0  0x00007ffff27208bd in syscall () from /nix/store/776irwlgfb65a782cxmyk61pck460fs9-glibc-2.40-66/lib/libc.so.6
#1  0x00007ffff319d305 in QBasicMutex::lockInternal() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#2  0x00007ffff3014cb7 in queued_activate(QObject*, int, QObjectPrivate::Connection*, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#3  0x00007ffff302570d in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#4  0x00007ffff44f6c9e in QAbstractSlider::rangeChanged(int, int) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#5  0x00007ffff44f753a in QAbstractSlider::setRange(int, int) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#6  0x00007ffff461162c in QTextEditPrivate::adjustScrollbars() [clone .part.0] () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#7  0x00007ffff30257ee in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#8  0x00007ffff4637a1c in QWidgetTextControl::documentSizeChanged(QSizeF const&) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#9  0x00007ffff30257ee in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#10 0x00007ffff3ac8efc in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#11 0x00007ffff3b925fb in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#12 0x00007ffff3b62f89 in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#13 0x00007fffb06aff52 in LogDockerDock::insertMessage (this=0x1166d090, type=<optimized out>, msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:311
#14 0x00007ffff3025ab8 in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#15 0x00007fffb06ab840 in QMetaObject::activate<void, QtMsgType, QString> (sender=<optimized out>, mo=0x7fffb06ba400 <MessageSender::staticMetaObject>, local_signal_index=0, ret=0x0) at /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/include/QtCore/qobjectdefs.h:306
#16 MessageSender::emitMessage (this=<optimized out>, _t1=<optimized out>, _t1@entry=QtWarningMsg, _t2=...) at /home/user/sources/krita/build/plugins/dockers/logdocker/kritalogdocker_autogen/EWIEGA46WW/moc_LogDockerDock.cpp:121
#17 0x00007fffb06af6d3 in MessageSender::sendMessage (this=<optimized out>, type=QtWarningMsg, msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:338
#18 LogDockerDock::messageHandler (type=QtWarningMsg, context=..., msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:280
#19 0x00007ffff2f292fb in qt_message_print(QtMsgType, QMessageLogContext const&, QString const&) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#20 0x00007ffff2f2944e in qt_message(QtMsgType, QMessageLogContext const&, char const*, __va_list_tag*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#21 0x00007ffff2ed56df in QMessageLogger::warning(char const*, ...) const () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#22 0x00007ffff301a831 in QMetaObjectPrivate::disconnect(QObject const*, int, QMetaObject const*, QObject const*, int, void**, QMetaObjectPrivate::DisconnectType) [clone .constprop.0] () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#23 0x00007ffff301af56 in QObject::disconnect(QObject const*, char const*, QObject const*, char const*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#24 0x00007ffff77d81c5 in QObject::disconnect (this=<optimized out>, signal=0x0, receiver=0x0, member=0x0) at /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/include/QtCore/qobject.h:292
#25 KisDecorationsManager::setView (this=0x4220478, imageView=...) at /home/user/sources/krita/libs/ui/KisDecorationsManager.cpp:49
#26 0x00007ffff7ba69d3 in KisViewManager::setCurrentView (this=<optimized out>, view=view@entry=0x1a8d7460) at /home/user/sources/krita/libs/ui/KisViewManager.cpp:555
#27 0x00007ffff7b5600c in KisMainWindow::setActiveView (this=0x1c2baa0, view=0x1a8d7460) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:1678
#28 0x00007ffff7b618c8 in KisMainWindow::showView (this=0x1c2baa0, imageView=0x1a8d7460, subwin=<optimized out>) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:829
#29 0x00007ffff7b50058 in KisMainWindow::addView (this=0x1c2baa0, view=0x1a8d7460, subWindow=0x0) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:737
#30 0x00007ffff7b59849 in KisMainWindow::addViewAndNotifyLoadingCompleted (this=this@entry=0x1c2baa0, document=document@entry=0x5dc5440, subWindow=subWindow@entry=0x0) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:1149
#31 0x00007ffff7b59968 in KisMainWindow::slotLoadCompleted (this=0x1c2baa0) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:1174
#32 0x00007ffff3025ab8 in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#33 0x00007ffff7b2dc38 in KisDocument::openPathInternal (this=this@entry=0x5dc5440, path=...) at /home/user/sources/krita/libs/ui/KisDocument.cpp:2580
#34 0x00007ffff7b369f1 in KisDocument::openPath (this=this@entry=0x5dc5440, _path=..., flags=..., flags@entry=...) at /home/user/sources/krita/libs/ui/KisDocument.cpp:1933
#35 0x00007ffff7b5aa55 in KisMainWindow::openDocumentInternal (this=this@entry=0x1c2baa0, path=..., flags=flags@entry=...) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:1098
#36 0x00007ffff7b5b1b1 in KisMainWindow::openDocument (this=0x1c2baa0, path=..., flags=..., flags@entry=...) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:1072
#37 0x00007ffff78434eb in KisWelcomePageWidget::recentDocumentClicked (this=0x39cab00, index=...) at /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/include/QtCore/qflags.h:77
#38 0x00007ffff7580d96 in KisWelcomePageWidget::qt_static_metacall (_o=0x39cab00, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/user/sources/krita/build/libs/ui/kritaui_autogen/EWIEGA46WW/moc_KisWelcomePageWidget.cpp:215
#39 0x00007ffff3025ab8 in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#40 0x00007ffff46cca6c in QAbstractItemView::clicked(QModelIndex const&) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#41 0x00007ffff46dacff in QAbstractItemView::mouseReleaseEvent(QMouseEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#42 0x00007ffff472f9c8 in QListView::mouseReleaseEvent(QMouseEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#43 0x00007ffff440db08 in QWidget::event(QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#44 0x00007ffff4467c9a in QFrame::event(QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#45 0x00007ffff2fb742e in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#46 0x00007ffff43a1c1d in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#47 0x00007ffff43acb32 in QApplication::notify(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#48 0x00007ffff7b11dae in KisApplication::notify (this=0x7ffffffdd0f0, receiver=0x1da4590, event=0x7ffffffdc270) at /home/user/sources/krita/libs/ui/KisApplication.cpp:864
#49 0x00007ffff2fb76f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#50 0x00007ffff43ab459 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#51 0x00007ffff4423393 in QWidgetWindow::handleMouseEvent(QMouseEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#52 0x00007ffff4425e10 in QWidgetWindow::event(QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#53 0x00007ffff43a1c2d in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#54 0x00007ffff7b11dae in KisApplication::notify (this=0x7ffffffdd0f0, receiver=0x4302980, event=0x7ffffffdc5e0) at /home/user/sources/krita/libs/ui/KisApplication.cpp:864
#55 0x00007ffff2fb76f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#56 0x00007ffff3807586 in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#57 0x00007ffff3877174 in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#58 0x00007ffff38773b0 in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#59 0x00007ffff301694a in QObject::event(QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#60 0x00007ffff43a1c2d in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#61 0x00007ffff7b11dae in KisApplication::notify (this=0x7ffffffdd0f0, receiver=0xf29d50, event=0x7fffd80034e0) at /home/user/sources/krita/libs/ui/KisApplication.cpp:864
#62 0x00007ffff2fb76f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#63 0x00007ffff2fbb5e8 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#64 0x00007ffff32e64ff in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#65 0x00007ffff2503f2d in g_main_context_dispatch_unlocked () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#66 0x00007ffff2506278 in g_main_context_iterate_unlocked.isra () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#67 0x00007ffff2506b0f in g_main_context_iteration () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#68 0x00007ffff32e5b93 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#69 0x00007ffff2fc649b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#70 0x00007ffff2fc1501 in QCoreApplication::exec() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#71 0x0000000000409fce in main (argc=<optimized out>, argv=<optimized out>) at /home/user/sources/krita/krita/main.cc:802
```
Comment 1 Ming Chuan 2025-09-25 20:17:17 UTC
it also randomly stuck when closing the krita program, with similar stack trace
```
#0  0x00007ffff27208bd in syscall () from /nix/store/776irwlgfb65a782cxmyk61pck460fs9-glibc-2.40-66/lib/libc.so.6
#1  0x00007ffff319d305 in QBasicMutex::lockInternal() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#2  0x00007ffff3014cb7 in queued_activate(QObject*, int, QObjectPrivate::Connection*, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#3  0x00007ffff302570d in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#4  0x00007ffff44f6c9e in QAbstractSlider::rangeChanged(int, int) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#5  0x00007ffff44f753a in QAbstractSlider::setRange(int, int) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#6  0x00007ffff461162c in QTextEditPrivate::adjustScrollbars() [clone .part.0] () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#7  0x00007ffff30257ee in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#8  0x00007ffff4637a1c in QWidgetTextControl::documentSizeChanged(QSizeF const&) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#9  0x00007ffff30257ee in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#10 0x00007ffff3ac8efc in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#11 0x00007ffff3b925fb in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#12 0x00007ffff3b62f89 in ?? () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Gui.so.6
#13 0x00007fffbca2ef52 in LogDockerDock::insertMessage (this=0x116269c0, type=<optimized out>, msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:311
#14 0x00007ffff3025ab8 in void doActivate<false>(QObject*, int, void**) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#15 0x00007fffbca2a840 in QMetaObject::activate<void, QtMsgType, QString> (sender=<optimized out>, mo=0x7fffbca39400 <MessageSender::staticMetaObject>, local_signal_index=0, ret=0x0)
    at /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/include/QtCore/qobjectdefs.h:306
#16 MessageSender::emitMessage (this=<optimized out>, _t1=<optimized out>, _t1@entry=QtWarningMsg, _t2=...)
    at /home/user/sources/krita/build/plugins/dockers/logdocker/kritalogdocker_autogen/EWIEGA46WW/moc_LogDockerDock.cpp:121
#17 0x00007fffbca2e6d3 in MessageSender::sendMessage (this=<optimized out>, type=QtWarningMsg, msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:338
#18 LogDockerDock::messageHandler (type=QtWarningMsg, context=..., msg=...) at /home/user/sources/krita/plugins/dockers/logdocker/LogDockerDock.cpp:280
#19 0x00007ffff2f292fb in qt_message_print(QtMsgType, QMessageLogContext const&, QString const&) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#20 0x00007ffff2f2944e in qt_message(QtMsgType, QMessageLogContext const&, char const*, __va_list_tag*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#21 0x00007ffff2ed56df in QMessageLogger::warning(char const*, ...) const () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#22 0x00007ffff301a831 in QMetaObjectPrivate::disconnect(QObject const*, int, QMetaObject const*, QObject const*, int, void**, QMetaObjectPrivate::DisconnectType) [clone .constprop.0] ()
   from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#23 0x00007ffff301af56 in QObject::disconnect(QObject const*, char const*, QObject const*, char const*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#24 0x00007ffff7063a43 in QObject::disconnect (this=0x11749c40, signal=0x0, receiver=0x0, member=0x0) at /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/include/QtCore/qobject.h:292
#25 KisResourceItemChooser::~KisResourceItemChooser (this=0x11749c40, __in_chrg=<optimized out>) at /home/user/sources/krita/libs/resourcewidgets/KisResourceItemChooser.cpp:298
#26 0x00007ffff7063b21 in KisResourceItemChooser::~KisResourceItemChooser (this=0x11749c40, __in_chrg=<optimized out>) at /home/user/sources/krita/libs/resourcewidgets/KisResourceItemChooser.cpp:300
#27 0x00007ffff301cddd in QObjectPrivate::deleteChildren() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#28 0x00007ffff4408448 in QWidget::~QWidget() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#29 0x00007ffff7996f11 in KisPresetChooser::~KisPresetChooser (this=0x1167c470, __in_chrg=<optimized out>) at /home/user/sources/krita/libs/ui/widgets/kis_preset_chooser.cpp:208
#30 0x00007ffff301cddd in QObjectPrivate::deleteChildren() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#31 0x00007ffff4408448 in QWidget::~QWidget() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#32 0x00007ffff7992071 in KisPaintOpPresetsChooserPopup::~KisPaintOpPresetsChooserPopup (this=0x1173db70, __in_chrg=<optimized out>)
    at /home/user/sources/krita/libs/ui/widgets/kis_paintop_presets_chooser_popup.cpp:104
#33 0x00007ffff301cddd in QObjectPrivate::deleteChildren() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#34 0x00007ffff4408448 in QWidget::~QWidget() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#35 0x00007fffbcecaf76 in PresetDockerDock::~PresetDockerDock (this=0x1173eaf0, __in_chrg=<optimized out>)
    at /home/user/sources/krita/build/plugins/dockers/presetdocker/kritapresetdocker_autogen/EWIEGA46WW/../../../../../../plugins/dockers/presetdocker/presetdocker_dock.h:17
#36 PresetDockerDock::~PresetDockerDock (this=0x1173eaf0, __in_chrg=<optimized out>)
    at /home/user/sources/krita/build/plugins/dockers/presetdocker/kritapresetdocker_autogen/EWIEGA46WW/../../../../../../plugins/dockers/presetdocker/presetdocker_dock.h:17
#37 0x00007ffff301cddd in QObjectPrivate::deleteChildren() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#38 0x00007ffff4408448 in QWidget::~QWidget() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#39 0x00007ffff7b57e7b in KisMainWindow::~KisMainWindow (this=0x1a54360, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:715
#40 0x00007ffff7b57f21 in KisMainWindow::~KisMainWindow (this=0x1a54360, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /home/user/sources/krita/libs/ui/KisMainWindow.cpp:715
#41 0x00007ffff3016836 in QObject::event(QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#42 0x00007ffff43a1c2d in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Widgets.so.6
#43 0x00007ffff7b11dae in KisApplication::notify (this=0x7ffffffdd0f0, receiver=0x1a54360, event=0x1d12b820) at /home/user/sources/krita/libs/ui/KisApplication.cpp:864
#44 0x00007ffff2fb76f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#45 0x00007ffff2fbb5e8 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#46 0x00007ffff32e64ff in postEventSourceDispatch(_GSource*, int (*)(void*), void*) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#47 0x00007ffff2503f2d in g_main_context_dispatch_unlocked () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#48 0x00007ffff2506278 in g_main_context_iterate_unlocked.isra () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#49 0x00007ffff2506b0f in g_main_context_iteration () from /nix/store/qfm3kqdbpd289nnmdhd4dis4svd2nzwv-glib-2.84.4/lib/libglib-2.0.so.0
#50 0x00007ffff32e5b93 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#51 0x00007ffff2fc649b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#52 0x00007ffff2fc1501 in QCoreApplication::exec() () from /nix/store/dkfr32yi7p8cdxsnll05q1kax19fl7ay-qtbase-6.9.2/lib/libQt6Core.so.6
#53 0x0000000000409fce in main (argc=<optimized out>, argv=<optimized out>) at /home/user/sources/krita/krita/main.cc:802
```
Comment 2 Ming Chuan 2025-09-25 20:24:51 UTC
I get bunch of messages like this in the log, unsure if it's relevant
```
QObject::disconnect: wildcard call disconnects from destroyed signal of KisAction::view_toggle_painting_assistants
QObject::disconnect: wildcard call disconnects from destroyed signal of KisAction::view_toggle_assistant_previews
QObject::disconnect: wildcard call disconnects from destroyed signal of KToggleAction::mirror_canvas
QObject::disconnect: wildcard call disconnects from destroyed signal of KToggleAction::mirror_canvas_around_cursor
QObject::disconnect: wildcard call disconnects from destroyed signal of KToggleAction::mirror_canvas_around_canvas
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::brush_selector
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
QObject::disconnect: wildcard call disconnects from destroyed signal of KisResourceItemChooser::unnamed
```
Comment 3 Ming Chuan 2025-09-29 09:08:18 UTC
I dug into the stack more and did some test, I think this issue is specific to the "QObject::disconnect: wildcard call disconnects from destroyed signal of ..." error message I mentioned in the previous comment.

Here’s what’s happening in the stack trace above:
1. Qt's event handling code generates "QObject::disconnect: wildcard call disconnects from destroyed signal of ..." warning
2. The `LogDockerDock` handles it (because we installed a custom handler with `qInstallMessageHandler`)
3. The `LogDockerDock` updates its text, because the size of text passed a threshold, it triggers some slider change, all these on the same thread.
4. The slider code then tries to enqueue a new event to Qt event loop, however, the warning message generating code in step 1 still holds relevant mutex, causing the deadlock, due to reentrancy.

This matches my experiments: if I try to enqueue an event inside the LogDockerDock message handler, it deadlocks immediately.

In https://doc.qt.io/qt-6/qtlogging.html#qInstallMessageHandler it requires message handler to be "reentrant", "avoid recursion", and preferably "minimal". Which I think we are violating here in `LogDockerDock`, as updating text in the log docker is pretty complex operation
Comment 4 Ming Chuan 2025-09-29 09:47:50 UTC
Thanks askmeaboutloom for pointing out this, the problematic warning message is recently added to Qt ( https://github.com/qt/qtbase/commit/a79d5b8d0856a8f6c4de56a8d982c84ea20905a6 ) . I'm using Qt 6.9.2. Perhaps it's not reproducible with Krita appimage as it currently have older version
Comment 5 Ming Chuan 2025-10-22 06:25:41 UTC
Any thoughts on how to address this? Here are some ways but none of them are ideal

1. Create a new QThread just to "bounce" the log message, to avoid emitting event in message handler
2. Use a periodic QTimer to refresh the log viewer instead of updating it directly in message handler
3. Defer (queue) the log message that begins with "QObject::disconnect"
4. File a ticket to upstream. They log a message while holding a mutex seems simply to be a unnecessary, oversight.