| Summary: | Crash after closing a document. | ||
|---|---|---|---|
| Product: | [Applications] krita | Reporter: | wolthera <griffinvalley> |
| Component: | General | Assignee: | Krita Bugs <krita-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | anna.medonosova, griffinvalley, halla |
| Priority: | NOR | Keywords: | drkonqi |
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Neon | ||
| OS: | Linux | ||
| Latest Commit: | https://commits.kde.org/krita/8161893484cc31bb417c980e978db3a2046b4d4e | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
| Attachments: | New crash information added by DrKonqi | ||
|
Description
wolthera
2019-03-04 21:22:15 UTC
Created attachment 118547 [details]
New crash information added by DrKonqi
krita (4.2.0-pre-alpha (git 03db690)) using Qt 5.12.0
- What I was doing when the application crashed:
Okay, so it seems to be related to the canvas I am switching to when I close this document having had a mirror config setup in a previous session.
-- Backtrace (Reduced):
#6 0x00007fdfb7104690 in QObject::blockSignals(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7 0x00007fdfba45ca83 in KisSignalsBlocker::blockObjects (this=0x7fff7cbe8888) at /home/wolthera/krita/src/libs/global/kis_signals_blocker.h:82
#8 0x00007fdfba478e78 in KisSignalsBlocker::KisSignalsBlocker (this=0x7fff7cbe8888, object=0x559a00000068) at /home/wolthera/krita/src/libs/global/kis_signals_blocker.h:65
#9 0x00007fdfba8c7401 in KisMirrorAxis::setMirrorAxisConfig (this=0x559af8e21920, config=...) at /home/wolthera/krita/src/libs/ui/canvas/kis_mirror_axis.cpp:365
#10 0x00007fdfba951380 in KisMirrorManager::setDecorationConfig (this=0x559ae9f45360) at /home/wolthera/krita/src/libs/ui/kis_mirror_manager.cpp:129
different but somewhat related crash:
Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
0x00007ffff66cc739 in KisMirrorAxisConfig::Private::operator== (this=0x555574118b90,
rhs=...) at /home/wolthera/krita/src/libs/ui/canvas/KisMirrorAxisConfig.cpp:41
41 return mirrorHorizontal == rhs.mirrorHorizontal &&
-------------------
Thread 1 (Thread 0x7ffff7f80840 (LWP 2326)):
#0 0x00007ffff66cc739 in KisMirrorAxisConfig::Private::operator== (this=0x555574118b90,
rhs=...) at /home/wolthera/krita/src/libs/ui/canvas/KisMirrorAxisConfig.cpp:41
#1 0x00007ffff66cb8a1 in KisMirrorAxisConfig::operator== (this=0x7fffffffbf20, rhs=...)
at /home/wolthera/krita/src/libs/ui/canvas/KisMirrorAxisConfig.cpp:98
#2 0x00007ffff6b15255 in boost::operators_impl::operator!= (x=..., y=...)
at /usr/include/boost/operators.hpp:158
#3 0x00007ffff6b13aa6 in KisMirrorAxis::setMirrorAxisConfig (this=0x55557796d300,
config=...) at /home/wolthera/krita/src/libs/ui/canvas/kis_mirror_axis.cpp:364
#4 0x00007ffff6b9da48 in KisMirrorManager::setDecorationConfig (this=0x5555657a7bd0)
at /home/wolthera/krita/src/libs/ui/kis_mirror_manager.cpp:129
#5 0x00007ffff6b9d55c in KisMirrorManager::setView (this=0x5555657a7bd0, imageView=...)
at /home/wolthera/krita/src/libs/ui/kis_mirror_manager.cpp:86
#6 0x00007ffff6b8fcaa in KisViewManager::setCurrentView (this=0x555566ab4f70,
view=0x55556dce79d0) at /home/wolthera/krita/src/libs/ui/KisViewManager.cpp:497
#7 0x00007ffff6b5230e in KisMainWindow::setActiveView (this=0x555557331460,
view=0x55556dce79d0) at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:1320
#8 0x00007ffff6b5940f in KisMainWindow::setActiveSubWindow (this=0x555557331460,
window=0x55556e1f1d10) at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:2298
#9 0x00007ffff6b573dc in KisMainWindow::subWindowActivated (this=0x555557331460)
at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:2075
#10 0x00007ffff6b5c5f9 in KisMainWindow::qt_static_metacall (_o=0x555557331460,
_c=QMetaObject::InvokeMetaMethod, _id=21, _a=0x7fffffffc370)
at /home/wolthera/krita/build/libs/ui/kritaui_autogen/include/moc_KisMainWindow.cpp:323
#11 0x00007ffff3352e25 in QMetaObject::activate(QObject*, int, int, void**) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff426fbbf in QMdiArea::subWindowActivated(QMdiSubWindow*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff427421f in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff4274f28 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff4275e05 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
---Type <return> to continue, or q <return> to quit---
#16 0x00007ffff3352e25 in QMetaObject::activate(QObject*, int, int, void**) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007ffff427b43c in QMdiSubWindow::windowStateChanged(QFlags<Qt::WindowState>, QFlags<Qt::WindowState>) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#18 0x00007ffff4283233 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff427862a in QMdiArea::viewportEvent(QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff33230ad in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffff4119815 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff4120dd0 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff6b18e8d in KisApplication::notify (this=0x7fffffffe0c0,
receiver=0x555566153910, event=0x7fffffffca20)
at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:607
#24 0x00007ffff3323328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff4284c2b in QMdiSubWindow::closeEvent(QCloseEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff4159838 in QWidget::event(QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff42841eb in QMdiSubWindow::event(QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff411983c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff4120dd0 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff6b18e8d in KisApplication::notify (this=0x7fffffffe0c0,
receiver=0x555571cb3130, event=0x7fffffffcee0)
at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:607
#31 0x00007ffff3323328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#32 0x00007ffff4154b7e in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff41589fa in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff3352e25 in QMetaObject::activate(QObject*, int, int, void**) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007ffff427be9e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff4159838 in QWidget::event(QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff4281850 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff411983c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff4121ca8 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff6b18e8d in KisApplication::notify (this=0x7fffffffe0c0,
receiver=0x555571c9a440, event=0x7fffffffd680)
at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:607
---Type <return> to continue, or q <return> to quit---
#41 0x00007ffff3323328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#42 0x00007ffff412029f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#43 0x00007ffff4174a80 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff417734a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007ffff411983c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007ffff4120dd0 in QApplication::notify(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff6b18e8d in KisApplication::notify (this=0x7fffffffe0c0,
receiver=0x555566a06360, event=0x7fffffffdba0)
at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:607
#48 0x00007ffff3323328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#49 0x00007ffff38eb52b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#50 0x00007ffff38ec695 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#51 0x00007ffff38c514b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#52 0x00007fffde91530a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#53 0x00007fffea6ce387 in g_main_context_dispatch ()
from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#54 0x00007fffea6ce5c0 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#55 0x00007fffea6ce64c in g_main_context_iteration ()
from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#56 0x00007ffff338013f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#57 0x00007ffff332164a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#58 0x00007ffff332a800 in QCoreApplication::exec() ()
from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#59 0x0000555555e92acd in main (argc=1, argv=0x7fffffffe228)
at /home/wolthera/krita/src/krita/main.cc:487
Not sure whether to make a seperate report.
It seems that both crashes are symptoms of one problem: the KisMirrorManager handles it's decorations incorrectly. I can reproduce the crash with following steps: 1, open two documents with mirror configuration 2, close one of the documents 3, click on the mirror tool buttons in paintop box I just took a look, and that's indeed rather weird code. It doesn't look like the owner is KisMirrorManager. So, at the very least, the config should be in a QWeakSharedPointer so we know when it's deleted by the owner. Git commit f16b1f8b61ad08899a9518577aa6af1e0080eea4 by Anna Medonosova. Committed on 06/03/2019 at 14:57. Pushed by amedonosova into branch 'master'. Fix decoration handling in KisMirrorManager KisMirrorManager did not update d->mirrorAxisDecoration upon view change, instead it used last created decoration. If the document tied to that decoration was closed, Krita crashed. M +3 -0 libs/ui/canvas/KisMirrorAxisConfig.cpp M +13 -12 libs/ui/kis_mirror_manager.cpp M +0 -1 libs/ui/kis_mirror_manager.h https://commits.kde.org/krita/f16b1f8b61ad08899a9518577aa6af1e0080eea4 Git commit 8161893484cc31bb417c980e978db3a2046b4d4e by Anna Medonosova. Committed on 18/03/2019 at 15:10. Pushed by amedonosova into branch 'master'. Better pointer handling in KisMirrorManager and KisMirrorAxis Summary: BUG:405093,404852 Reviewers: #krita, dkazakov Reviewed By: #krita, dkazakov Subscribers: dkazakov Tags: #krita Differential Revision: https://phabricator.kde.org/D19776 M +3 -0 libs/image/kis_types.h M +1 -2 libs/ui/canvas/kis_mirror_axis.cpp M +3 -1 libs/ui/canvas/kis_mirror_axis.h M +29 -21 libs/ui/kis_mirror_manager.cpp M +3 -6 libs/ui/kis_mirror_manager.h https://commits.kde.org/krita/8161893484cc31bb417c980e978db3a2046b4d4e |