https://bugs.kde.org/show_bug.cgi?id=387334
comicfans44 <comicfan...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |comicfan...@gmail.com --- Comment #5 from comicfans44 <comicfan...@gmail.com> --- I've confirmed this bug , seems it's triggered by lxqt customized qt plugin a lxqt filedialog (as LXQtFileDialogHelper member) is created as following steps: create 0x00007fffdcef400c in LXQtFileDialogHelper::LXQtFileDialogHelper() (this=0x6040002b1d10) at /srv/nfs4/working/lxqt-qtplugin/src/lxqt-qtplugin-0.12.0/src/lxqtfiledialoghelper.cpp:22 #1 0x00007fffdcef5365 in non-virtual thunk to LXQtPlatformTheme::createPlatformDialogHelper(QPlatformTheme::DialogType) const () at /usr/include/qt/QtCore/qcoreapplication.h:116 #2 0x00007ffff54a7b20 in QDialogPrivate::platformHelper() const () at /usr/lib/libQt5Widgets.so.5 #3 0x00007ffff54ba3fd in QFileDialogPrivate::init(QUrl const&, QString const&, QString const&) () at /usr/lib/libQt5Widgets.so.5 #4 0x00007ffff54ba822 in QFileDialog::QFileDialog(QWidget*, QString const&, QString const&, QString const&) () at /usr/lib/libQt5Widgets.so.5 #5 0x00007ffff5e7e46c in KoFileDialog::createFileDialog() () at /usr/lib/libkritawidgetutils.so.18 #6 0x00007ffff5e7efd7 in KoFileDialog::filename() () at /usr/lib/libkritawidgetutils.so.18 #7 0x00007ffff692592a in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) () at /usr/lib/libkritaui.so.18 but when save as triggered, it's deleted during QFileDialog::setOptions #0 0x00007fffdceecec0 in LXQtFileDialogHelper::~LXQtFileDialogHelper() (this=0x6040002b1d10) at /srv/nfs4/working/lxqt-qtplugin/src/lxqt-qtplugin-0.12.0/src/lxqtfiledialoghelper.cpp:39 #1 0x00007ffff54a7dc6 in QDialogPrivate::deletePlatformHelper() () at /usr/lib/libQt5Widgets.so.5 #2 0x00007ffff54b9b19 in () at /usr/lib/libQt5Widgets.so.5 #3 0x00007ffff54b9d69 in QFileDialog::setOptions(QFlags<QFileDialog::Option>) () at /usr/lib/libQt5Widgets.so.5 #4 0x00007ffff5e7e603 in KoFileDialog::createFileDialog() () at /usr/lib/libkritawidgetutils.so.18 #5 0x00007ffff5e7efd7 in KoFileDialog::filename() () at /usr/lib/libkritawidgetutils.so.18 #6 0x00007ffff692592a in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) () at /usr/lib/libkritaui.so.18 after this, Krita called dialog exec QString KoFileDialog::filename() { QString url; createFileDialog(); --- > already deleted lxqt FileDialog if (d->fileDialog->exec() == and exec triggered the already-destructed lxqt FileDialog's timer slot #0 0x7fffdc77aaa6 in operator() /home/comicfans/working/pacman/src/libfm-qt-0.12.0/src/filedialog.cpp:425 #1 0x7fffdc77aaa6 in call /usr/include/qt/QtCore/qobjectdefs_impl.h:130 #2 0x7fffdc77aaa6 in call /usr/include/qt/QtCore/qobjectdefs_impl.h:240 #3 0x7fffdc77aaa6 in QtPrivate::QFunctorSlotObject<Fm::FileDialog::selectFilePathWithDelay(Fm::FilePath const&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) [clone .lto_priv.363] /usr/include/qt/QtCore/qobjectdefs_impl.h:423 #4 0x7ffff4574a03 (/usr/lib/libQt5Core.so.5+0x2d9a03) #5 0x7ffff456840a in QObject::event(QEvent*) (/usr/lib/libQt5Core.so.5+0x2cd40a) #6 0x7ffff52b1e3b in QApplicationPrivate::notify_helper(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x151e3b) #7 0x7ffff52b9815 in QApplication::notify(QObject*, QEvent*) (/usr/lib/libQt5Widgets.so.5+0x159815) #8 0x7ffff68ead97 in KisApplication::notify(QObject*, QEvent*) (/usr/lib/libkritaui.so.18+0x57ed97) #9 0x7ffff45371df in QCoreApplication::notifyInternal2(QObject*, QEvent*) (/usr/lib/libQt5Core.so.5+0x29c1df) #10 0x7ffff4592ad7 in QTimerInfoList::activateTimers() (/usr/lib/libQt5Core.so.5+0x2f7ad7) #11 0x7ffff45932d1 (/usr/lib/libQt5Core.so.5+0x2f82d1) #12 0x7fffebb0c26f in g_main_context_dispatch (/usr/lib/libglib-2.0.so.0+0x6b26f) #13 0x7fffebb0df68 (/usr/lib/libglib-2.0.so.0+0x6cf68) #14 0x7fffebb0dfad in g_main_context_iteration (/usr/lib/libglib-2.0.so.0+0x6cfad) #15 0x7ffff4593690 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib/libQt5Core.so.5+0x2f8690) #16 0x7fffe0b46281 (/usr/lib/libQt5XcbQpa.so.5+0xc5281) #17 0x7ffff453582a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (/usr/lib/libQt5Core.so.5+0x29a82a) #18 0x7ffff54a8dca in QDialog::exec() (/usr/lib/libQt5Widgets.so.5+0x348dca) #19 0x7ffff5e7efe8 in KoFileDialog::filename() (/usr/lib/libkritawidgetutils.so.18+0x61fe8) #20 0x7ffff6925929 in KisMainWindow::saveDocument(KisDocument*, bool, bool, int) (/usr/lib/libkritaui.so.18+0x5b9929) #21 0x7ffff6926d45 in KisMainWindow::slotFileSaveAs() (/usr/lib/libkritaui.so.18+0x5bad45) #22 0x7ffff692b706 (/usr/lib/libkritaui.so.18+0x5bf706) this leads crash. lxqt connect this callback as: QTimer::singleShot(0, [this, path]() { ... seems Qt only disconnect this after control flow return to main loop. manually call processEvents can workaround this. should this addressed by Krita, or lxqt, or Qt itself? -- You are receiving this mail because: You are watching all bug changes.