https://bugs.kde.org/show_bug.cgi?id=387564
Bug ID: 387564 Summary: Crash on closing Krita if a new window had been opened and closed previously Product: krita Version: git master Platform: MS Windows OS: MS Windows Status: UNCONFIRMED Severity: normal Priority: NOR Component: General Assignee: krita-bugs-n...@kde.org Reporter: alvinhoc...@gmail.com Target Milestone: --- Steps to reproduce: 1. Open file 2. Draw a few strokes 3. Window->New Window 4. Close the new window 5. Draw a few more strokes 6. Close Krita, discard changes Might take more than a few tries... krita.exe caused an Access Violation at location 000007FED6532E01 in module libkritaui.dll Reading from location FFFFFFFFFFFFFFFF. AddrPC Params 000007FED6532E01 000000000E8D19E0 000000000022AA10 00000000108E6670 libkritaui.dll!updateGUI [F:/dev/krita/new/src/libs/ui/kis_action_manager.cpp @ 332] 330: } 331: > 332: action->setActionEnabled(enable); 333: } 334: } 000007FED66A8E17 000007FED7171480 0000000000000000 0000063E0004000E libkritaui.dll!subWindowActivated [F:/dev/krita/new/src/libs/ui/KisMainWindow.cpp @ 1990] 1988: 1989: updateCaption(); > 1990: d->actionManager()->updateGUI(); 1991: } 1992: 000007FED66B3D35 000000000E8D8120 0000000000000000 00000000FFFFFFFF libkritaui.dll!qt_static_metacall [F:/dev/krita/new/build_x64/build_krita/libs/ui/kritaui_autogen/include/moc_KisMainWindow.cpp @ 346] 344: case 51: _t->showErrorAndDie(); break; 345: case 52: _t->setActiveView((*reinterpret_cast< KisView*(*)>(_a[1]))); break; > 346: case 53: _t->subWindowActivated(); break; 347: case 54: _t->initializeGeometry(); break; 348: case 55: _t->showManual(); break; 000007FED6E7B2EA 000000000E8D8120 000007FED5FF6924 000000000022ABE0 Qt5Core.dll!activate [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qobject.cpp @ 3766] 3764: qt_signal_spy_callback_set.slot_begin_callback(receiver, methodIndex, argv ? argv : empty_argv); 3765: > 3766: callFunction(receiver, QMetaObject::InvokeMetaMethod, > method_relative, argv ? argv : empty_argv); 3767: 3768: if (qt_signal_spy_callback_set.slot_end_callback != 0) 000007FED5FF2DE1 0000000000000080 0000000000000080 00000000004B0308 Qt5Widgets.dll!resetActiveWindow [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/b/qtbase/src/widgets/.moc/release/moc_qmdiarea.cpp @ 308] 306: { 307: void *_a[] = { nullptr, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) }; > 308: QMetaObject::activate(this, &staticMetaObject, 0, _a); 309: } 310: QT_WARNING_POP 000007FED5FF8998 0000000000000007 0000000000000040 000001B300250007 Qt5Widgets.dll!viewportEvent [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/widgets/qmdiarea.cpp @ 2432] 2430: d->childWindows.removeAt(i); 2431: d->indicesToActivatedChildren.removeAll(i); > 2432: d->updateActiveWindow(i, activeRemoved); 2433: d->arrangeMinimizedSubWindows(); 2434: break; 000007FED6E4F62C 0000000000000001 000007FEFD7313D2 0000000000000002 Qt5Core.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1129] 1127: continue; 1128: } > 1129: if (obj->eventFilter(receiver, event)) 1130: return true; 1131: } 000007FED5E97B55 00000000144EC6F0 000007FEFD7310C8 0000000000000080 Qt5Widgets.dll!notify_helper [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3718] 3716: 3717: // send to all receiver event filters > 3718: if (sendThroughObjectEventFilters(receiver, e)) 3719: return true; 3720: 000007FED5E9EDF0 0000000000000004 000007FED6C70DEF 00000000140C8C40 Qt5Widgets.dll!notify [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3481] 3479: } 3480: } > 3481: res = d->notify_helper(w, e); 3482: if (e->type() != QEvent::DragMove 3483: #if QT_CONFIG(graphicsview) 000007FED667D0F6 0000000013D09B10 00000000140C8C40 000000020000000A libkritaui.dll!notify [F:/dev/krita/new/src/libs/ui/KisApplication.cpp @ 599] 597: { 598: try { > 599: return QApplication::notify(receiver, event); 600: } catch (std::exception &e) { 601: qWarning("Error %s sending event %i to object %s", 000007FED6E50668 000000000022B0C0 000000000939A1C8 0000000000000030 Qt5Core.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1018] 1016: if (!selfRequired) 1017: return doNotify(receiver, event); > 1018: return self->notify(receiver, event); 1019: } 1020: 000007FED60027DF 97CF000000000410 000000000E8D8120 0000000000000000 Qt5Widgets.dll!closeEvent [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.h @ 233] 231: #ifndef QT_NO_QOBJECT 232: inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event) > 233: { if (event) event->spont = false; return notifyInternal2(receiver, > event); } 234: 235: inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) 000007FED5ED4358 000000001471D300 00000000140C8C40 0000000000000002 Qt5Widgets.dll!event [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qwidget.cpp @ 9200] 9198: case QEvent::ActionRemoved: 9199: case QEvent::ActionChanged: > 9200: actionEvent((QActionEvent*)event); 9201: break; 9202: #endif 000007FED6001F82 000000000022FB90 0000000000000000 000000000022FB90 Qt5Widgets.dll!event [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/widgets/qmdisubwindow.cpp @ 2933] 2931: break; 2932: } > 2933: return QWidget::event(event); 2934: } 2935: 000007FED5E97B7C 000000000E9436A0 0000000076EADD48 000000000022B5E0 Qt5Widgets.dll!notify_helper [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3722] 3720: 3721: // deliver the event > 3722: bool consumed = receiver->event(e); 3723: QCoreApplicationPrivate::setEventSpontaneous(e, false); 3724: return consumed; 000007FED5E9EDF0 000000000022B730 000007FED6C70DEF 000007FE00000008 Qt5Widgets.dll!notify [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3481] 3479: } 3480: } > 3481: res = d->notify_helper(w, e); 3482: if (e->type() != QEvent::DragMove 3483: #if QT_CONFIG(graphicsview) 000007FED667D0F6 000007FEFABEF0EA 000007FEFD740891 000007FEFABEF0EA libkritaui.dll!notify [F:/dev/krita/new/src/libs/ui/KisApplication.cpp @ 599] 597: { 598: try { > 599: return QApplication::notify(receiver, event); 600: } catch (std::exception &e) { 601: qWarning("Error %s sending event %i to object %s", 000007FED6E50668 00000000004EA770 0000000000000030 0000000076F703C8 Qt5Core.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1018] 1016: if (!selfRequired) 1017: return doNotify(receiver, event); > 1018: return self->notify(receiver, event); 1019: } 1020: 000007FED5ECF45F 000000000939A160 00006477F1A60716 00000000144EC8C8 Qt5Widgets.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.h @ 233] 231: #ifndef QT_NO_QOBJECT 232: inline bool QCoreApplication::sendEvent(QObject *receiver, QEvent *event) > 233: { if (event) event->spont = false; return notifyInternal2(receiver, > event); } 234: 235: inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) 000007FED5FF2406 0000000000000008 000007FE000003B6 000000000022B898 Qt5Widgets.dll!closeAllSubWindows [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/widgets/qmdiarea.cpp @ 1905] 1903: if (!sanityCheck(child, "QMdiArea::closeAllSubWindows")) 1904: continue; > 1905: child->close(); 1906: } 1907: 000007FED66A9FF1 0000000000000000 000000000022BCF0 0000000000000020 libkritaui.dll!closeEvent [F:/dev/krita/new/src/libs/ui/KisMainWindow.cpp @ 1195] 1193: void KisMainWindow::closeEvent(QCloseEvent *e) 1194: { > 1195: d->mdiArea->closeAllSubWindows(); 1196: 1197: QAction *action= d->viewManager->actionCollection()->action("view_show_canvas_only"); 000007FED5ED4358 00000000109725B0 000000001062B270 000000000022BCF0 Qt5Widgets.dll!event [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qwidget.cpp @ 9200] 9198: case QEvent::ActionRemoved: 9199: case QEvent::ActionChanged: > 9200: actionEvent((QActionEvent*)event); 9201: break; 9202: #endif 000007FED5FE65ED 0000000000000007 0000000000000018 000000BE00080007 Qt5Widgets.dll!event [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/widgets/qmainwindow.cpp @ 1563] 1561: } 1562: > 1563: return QWidget::event(event); 1564: } 1565: 000007FEDB304E4C 000000000022FB90 0000000000000000 000000000022FB90 libkritawidgetutils.dll!event [F:/dev/krita/new/src/libs/widgetutils/xmlgui/kmainwindow.cpp @ 780] 778: break; 779: } > 780: return QMainWindow::event(ev); 781: } 782: 000007FED5E97B7C 000000000E9436A0 000007FED71C2000 000000000022BCF0 Qt5Widgets.dll!notify_helper [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3722] 3720: 3721: // deliver the event > 3722: bool consumed = receiver->event(e); 3723: QCoreApplicationPrivate::setEventSpontaneous(e, false); 3724: return consumed; 000007FED5E9EDF0 000000000C0BAD40 000007FED6C70DEF 000000003DFB5C10 Qt5Widgets.dll!notify [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3481] 3479: } 3480: } > 3481: res = d->notify_helper(w, e); 3482: if (e->type() != QEvent::DragMove 3483: #if QT_CONFIG(graphicsview) 000007FED667D0F6 0000000014564DE0 000000000050A2E0 0000000000000009 libkritaui.dll!notify [F:/dev/krita/new/src/libs/ui/KisApplication.cpp @ 599] 597: { 598: try { > 599: return QApplication::notify(receiver, event); 600: } catch (std::exception &e) { 601: qWarning("Error %s sending event %i to object %s", 000007FED6E50668 000000000E8D8120 000007FED5FF8E43 00000000102EC7B8 Qt5Core.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1018] 1016: if (!selfRequired) 1017: return doNotify(receiver, event); > 1018: return self->notify(receiver, event); 1019: } 1020: 000007FED5ECF691 000000000FBFAEB0 000000000022C1A0 000007FED70694C8 Qt5Widgets.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.h @ 236] 234: 235: inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) > 236: { if (event) event->spont = true; return notifyInternal2(receiver, > event); } 237: #endif 238: 000007FED5EE84FA 00000000023DF2A0 000007FED6E4F51C 0000000000000001 Qt5Widgets.dll!handleCloseEvent [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qwidgetwindow.cpp @ 777] 775: void QWidgetWindow::handleCloseEvent(QCloseEvent *event) 776: { > 777: bool is_closing = > m_widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent); 778: event->setAccepted(is_closing); 779: } 000007FED5EEB4E1 000000000022FB90 00000000024736D0 0000000000000001 Qt5Widgets.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qwidgetwindow.cpp @ 202] 200: switch (event->type()) { 201: case QEvent::Close: > 202: handleCloseEvent(static_cast<QCloseEvent *>(event)); 203: return true; 204: 000007FED5E97B7C 0000000000000001 000007FED6EA3609 0000000002474F10 Qt5Widgets.dll!notify_helper [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3722] 3720: 3721: // deliver the event > 3722: bool consumed = receiver->event(e); 3723: QCoreApplicationPrivate::setEventSpontaneous(e, false); 3724: return consumed; 000007FED5E9EDF0 0000000000000014 000007FED6C70DEF 0000000000060001 Qt5Widgets.dll!notify [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/widgets/kernel/qapplication.cpp @ 3481] 3479: } 3480: } > 3481: res = d->notify_helper(w, e); 3482: if (e->type() != QEvent::DragMove 3483: #if QT_CONFIG(graphicsview) 000007FED667D0F6 000000000000FF00 0000000000030000 0000000000000401 libkritaui.dll!notify [F:/dev/krita/new/src/libs/ui/KisApplication.cpp @ 599] 597: { 598: try { > 599: return QApplication::notify(receiver, event); 600: } catch (std::exception &e) { 601: qWarning("Error %s sending event %i to object %s", 000007FED6E50668 0000000000000000 0000000000000000 0000000000000000 Qt5Core.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1018] 1016: if (!selfRequired) 1017: return doNotify(receiver, event); > 1018: return self->notify(receiver, event); 1019: } 1020: 000007FED95B665D 00000000023BEC11 00000000023BEBF8 0000000013FD9EC8 Qt5Gui.dll! ?? [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.h @ 236] 234: 235: inline bool QCoreApplication::sendSpontaneousEvent(QObject *receiver, QEvent *event) > 236: { if (event) event->spont = true; return notifyInternal2(receiver, > event); } 237: #endif 238: 000007FED95BAD95 000000000050A2E0 0000000002474F10 00000000002006FA Qt5Gui.dll!processWindowSystemEvent [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/gui/kernel/qguiapplication.cpp @ 1771] 1769: break; 1770: case QWindowSystemInterfacePrivate::Close: > 1771: QGuiApplicationPrivate::processCloseEvent( 1772: static_cast<QWindowSystemInterfacePrivate::CloseEvent *>(e)); 1773: break; 000007FED9591CB0 0000000000000000 000007FEEB0596DF 000000000000FF00 Qt5Gui.dll!sendWindowSystemEvents [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/gui/kernel/qwindowsysteminterface.cpp @ 939] 937: } else { 938: nevents++; > 939: QGuiApplicationPrivate::processWindowSystemEvent(event); 940: } 941: 000007FED6EA7ED6 0000000000000000 0000000000000038 000000000022C4A8 Qt5Core.dll!qt_internal_proc [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qeventdispatcher_win.cpp @ 235] 233: if (localSerialNumber != d->lastSerialNumber) { 234: d->lastSerialNumber = localSerialNumber; > 235: q->sendPostedEvents(); 236: } 237: return 0; 0000000076D79BBD 000000000022C5D0 000007FED6EA79A0 0000000000000000 USER32.dll!UserCallWinProcCheckWow 0000000076D798C2 000000000050A2E0 000000000050A2E0 000007FED6EA79A0 USER32.dll!DispatchMessageWorker 000007FED6EA71CB 0000000002474F10 0000000000000024 00000000023DF4D0 Qt5Core.dll!processEvents [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qeventdispatcher_win.cpp @ 627] 625: if (!filterNativeEvent(QByteArrayLiteral("windows_generic_MSG"), &msg, 0)) { 626: TranslateMessage(&msg); > 627: DispatchMessage(&msg); 628: } 629: } else if (waitRet - WAIT_OBJECT_0 < nCount) { 000000006A8DEF65 0000000000000080 0000000000000014 0000000013DABA20 qwindows.dll!processEvents [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/platformsupport/eventdispatchers/qwindowsguieventdispatcher.cpp @ 74] 72: const QEventLoop::ProcessEventsFlags oldFlags = m_flags; 73: m_flags = flags; > 74: const bool rc = QEventDispatcherWin32::processEvents(flags); 75: m_flags = oldFlags; 76: return rc; 000007FED6E4ED4F 0000000000000000 000007FED6CB1C70 000007FED6FA8100 Qt5Core.dll!exec [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qeventloop.cpp @ 134] 132: if (!d->threadData->eventDispatcher.load()) 133: return false; > 134: return d->threadData->eventDispatcher.load()->processEvents(flags); 135: } 136: 000007FED6E576A7 000000000022FC00 000000000022FB90 000000000022FB80 Qt5Core.dll!exec [F:/dev/krita/new/build_x64/build_3rdparty/ext_qt/s/qtbase/src/corelib/kernel/qcoreapplication.cpp @ 1291] 1289: self->d_func()->in_exec = true; 1290: self->d_func()->aboutToQuitEmitted = false; > 1291: int returnCode = eventLoop.exec(); 1292: threadData->quitNow = false; 1293: 0000000140005F13 0000000000000001 00000000024736B0 000000014048B988 krita.exe!main [F:/dev/krita/new/src/krita/main.cc @ 306] 304: &app, SLOT(fileOpenRequested(QString))); 305: > 306: int state = app.exec(); 307: 308: { 00000001400013F8 0000000000000000 0000000000000000 0000000000000000 krita.exe!0x1000013f8 00000001400014EB 0000000000000000 0000000000000000 0000000000000000 krita.exe!0x1000014eb 0000000076C559CD 0000000000000000 0000000000000000 0000000000000000 kernel32.dll!BaseThreadInitThunk 0000000076E8A561 0000000000000000 0000000000000000 0000000000000000 ntdll.dll!RtlUserThreadStart -- You are receiving this mail because: You are watching all bug changes.