Bug 360909 - Undo creation of Quick Clipping Group
Summary: Undo creation of Quick Clipping Group
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Layer Stack (show other bugs)
Version: 3.0 Alpha
Platform: Microsoft Windows Microsoft Windows
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-23 16:48 UTC by Draise
Modified: 2016-03-25 13:43 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Draise 2016-03-23 16:48:40 UTC
Create a Quick Clipping Group from multiple layers, then undo it, then it will make it hardcrash with an error message. 

Reproducible: Always

Steps to Reproduce:
1. Created a Quick Clipping group
2. Undo'd the Quick Clipping Group action
3. Crash

Actual Results:  
"Krita has encountered an internal error:

ASSERT (krita): "m_dummiesMap.contains(node)" in file C:\kritadev\krita\libs\ui\flake\kis_node_dummies_graph.cpp, line 187"

Expected Results:  
That the Quick Clipping Group would disarm and revert the layers to how they were.
Comment 1 Halla Rempt 2016-03-25 12:38:38 UTC
Hi Draise,

Thanks for your report. I can reproduce the assert with 3.0 pre-alpha, though if I press ignore, krita seems to continue without problems...
Comment 2 Halla Rempt 2016-03-25 12:41:42 UTC
Backtrace:

Thread 1 (Thread 0x7fe0c2ff37c0 (LWP 20889)):
[KCrash Handler]
#6  0x00007fe0baa470a7 in raise () at /lib64/libc.so.6
#7  0x00007fe0baa48458 in abort () at /lib64/libc.so.6
#8  0x00007fe0bb6ed7ce in  () at /usr/lib64/libQt5Core.so.5
#9  0x00007fe0bdbb9820 in kis_assert_common(char const*, char const*, int, bool) (assertion=assertion@entry=0x7fe0c2ac35e6 "m_dummiesMap.contains(node)", file=file@entry=0x7fe0c2ac35a8 "/home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp", line=line@entry=187, throwException=throwException@entry=false) at /home/boud/dev/krita/libs/global/kis_assert.cpp:79
#10 0x00007fe0bdbb9cf7 in kis_assert_recoverable(char const*, char const*, int) (assertion=assertion@entry=0x7fe0c2ac35e6 "m_dummiesMap.contains(node)", file=file@entry=0x7fe0c2ac35a8 "/home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp", line=line@entry=187) at /home/boud/dev/krita/libs/global/kis_assert.cpp:88
#11 0x00007fe0c26cae70 in KisNodeDummiesGraph::nodeToDummy(KisSharedPtr<KisNode>) (this=0x8bc0a50, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp:187
#12 0x00007fe0c26cd50c in KisNodeShapesGraph::nodeToDummy(KisSharedPtr<KisNode>) (this=<optimized out>, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_node_shapes_graph.cpp:81
#13 0x00007fe0c26ce154 in KisShapeController::dummyForNode(KisSharedPtr<KisNode>) const (this=<optimized out>, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_shape_controller.cpp:128
#14 0x00007fe0c2757f57 in KisNodeModel::indexFromNode(KisSharedPtr<KisNode>) const (this=0x843a280, node=...) at /home/boud/dev/krita/libs/ui/kis_node_model.cpp:103
#15 0x00007fe0c275bfaf in KisNodeFilterProxyModel::indexFromNode(KisSharedPtr<KisNode>) const (this=0x843a110, node=...) at /home/boud/dev/krita/libs/ui/kis_node_filter_proxy_model.cpp:105
#16 0x00007fe09280fc78 in KisLayerBox::slotNodeManagerChangedSelection(QList<KisSharedPtr<KisNode> > const&) (this=0x840bfd0, nodes=...) at /home/boud/dev/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp:803
#17 0x00007fe0928128c9 in KisLayerBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x840bfd0, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/plugins/extensions/dockers/defaultdockers/moc_kis_layer_box.cpp:229
#18 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#19 0x00007fe0c29f5b25 in KisNodeManager::sigUiNeedChangeSelectedNodes(QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, _t1=...) at /home/boud/dev/build/libs/ui/moc_kis_node_manager.cpp:430
#20 0x00007fe0c2745b41 in KisNodeManager::slotSetSelectedNodes(QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, nodes=...) at /home/boud/dev/krita/libs/ui/kis_node_manager.cpp:691
#21 0x00007fe0c2745bac in KisNodeManager::slotImageRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, activeNode=..., selectedNodes=...) at /home/boud/dev/krita/libs/ui/kis_node_manager.cpp:684
#22 0x00007fe0c2a0258f in KisNodeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x7eb2268, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/libs/ui/moc_kis_node_manager.cpp:325
#23 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#24 0x00007fe0c1cf489a in KisImage::sigRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=<optimized out>, _t1=..., _t2=...) at /home/boud/dev/build/libs/image/moc_kis_image.cpp:615
#25 0x00007fe0c1cf6b0c in KisImage::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7ffda6c71ed0) at /home/boud/dev/build/libs/image/moc_kis_image.cpp:282
#26 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#27 0x00007fe0c1cf4cfa in KisImageSignalRouter::sigRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x8bc5778, _t1=..., _t2=...) at /home/boud/dev/build/libs/image/moc_kis_image_signal_router.cpp:298
#28 0x00007fe0c1bcc24b in KisImageSignalRouter::slotNotification(KisImageSignalType) (this=this@entry=0x8bc5778, type=...) at /home/boud/dev/krita/libs/image/kis_image_signal_router.cpp:132
#29 0x00007fe0c1cf7ce5 in KisImageSignalRouter::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x8bc5778, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/libs/image/moc_kis_image_signal_router.cpp:142
#30 0x00007fe0bb90bac6 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#31 0x00007fe0bc5bee7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#32 0x00007fe0bc5c3cc8 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#33 0x00007fe0c2929e10 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x8bc5778, event=0x7fe06c0063a0) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:514
#34 0x00007fe0bb8dae95 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#35 0x00007fe0bb8dd057 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#36 0x00007fe0bb9328f3 in  () at /usr/lib64/libQt5Core.so.5
#37 0x00007fe0b61fcc84 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#38 0x00007fe0b61fced8 in  () at /usr/lib64/libglib-2.0.so.0
#39 0x00007fe0b61fcf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#40 0x00007fe0bb931d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#41 0x00007fe0bb8d8d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#42 0x00007fe0bc7ade1d in QDialog::exec() () at /usr/lib64/libQt5Widgets.so.5
#43 0x00007fe0bc7cebed in  () at /usr/lib64/libQt5Widgets.so.5
#44 0x00007fe0bdbb99e6 in kis_assert_common(char const*, char const*, int, bool) (assertion=assertion@entry=0x7fe0c2ac35e6 "m_dummiesMap.contains(node)", file=file@entry=0x7fe0c2ac35a8 "/home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp", line=line@entry=187, throwException=throwException@entry=false) at /home/boud/dev/krita/libs/global/kis_assert.cpp:75
#45 0x00007fe0bdbb9cf7 in kis_assert_recoverable(char const*, char const*, int) (assertion=assertion@entry=0x7fe0c2ac35e6 "m_dummiesMap.contains(node)", file=file@entry=0x7fe0c2ac35a8 "/home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp", line=line@entry=187) at /home/boud/dev/krita/libs/global/kis_assert.cpp:88
#46 0x00007fe0c26cae70 in KisNodeDummiesGraph::nodeToDummy(KisSharedPtr<KisNode>) (this=0x8bc0a50, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_node_dummies_graph.cpp:187
#47 0x00007fe0c26cd50c in KisNodeShapesGraph::nodeToDummy(KisSharedPtr<KisNode>) (this=<optimized out>, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_node_shapes_graph.cpp:81
#48 0x00007fe0c26ce154 in KisShapeController::dummyForNode(KisSharedPtr<KisNode>) const (this=<optimized out>, node=...) at /home/boud/dev/krita/libs/ui/flake/kis_shape_controller.cpp:128
#49 0x00007fe0c2757f57 in KisNodeModel::indexFromNode(KisSharedPtr<KisNode>) const (this=0x843a280, node=...) at /home/boud/dev/krita/libs/ui/kis_node_model.cpp:103
#50 0x00007fe0c275bfaf in KisNodeFilterProxyModel::indexFromNode(KisSharedPtr<KisNode>) const (this=0x843a110, node=...) at /home/boud/dev/krita/libs/ui/kis_node_filter_proxy_model.cpp:105
#51 0x00007fe09280fc78 in KisLayerBox::slotNodeManagerChangedSelection(QList<KisSharedPtr<KisNode> > const&) (this=0x840bfd0, nodes=...) at /home/boud/dev/krita/plugins/extensions/dockers/defaultdockers/kis_layer_box.cpp:803
#52 0x00007fe0928128c9 in KisLayerBox::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x840bfd0, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/plugins/extensions/dockers/defaultdockers/moc_kis_layer_box.cpp:229
#53 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#54 0x00007fe0c29f5b25 in KisNodeManager::sigUiNeedChangeSelectedNodes(QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, _t1=...) at /home/boud/dev/build/libs/ui/moc_kis_node_manager.cpp:430
#55 0x00007fe0c2745b41 in KisNodeManager::slotSetSelectedNodes(QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, nodes=...) at /home/boud/dev/krita/libs/ui/kis_node_manager.cpp:691
#56 0x00007fe0c2745bac in KisNodeManager::slotImageRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x7eb2268, activeNode=..., selectedNodes=...) at /home/boud/dev/krita/libs/ui/kis_node_manager.cpp:684
#57 0x00007fe0c2a0258f in KisNodeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x7eb2268, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/libs/ui/moc_kis_node_manager.cpp:325
#58 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#59 0x00007fe0c1cf489a in KisImage::sigRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=<optimized out>, _t1=..., _t2=...) at /home/boud/dev/build/libs/image/moc_kis_image.cpp:615
#60 0x00007fe0c1cf6b0c in KisImage::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7ffda6c73130) at /home/boud/dev/build/libs/image/moc_kis_image.cpp:282
#61 0x00007fe0bb90acc6 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib64/libQt5Core.so.5
#62 0x00007fe0c1cf4cfa in KisImageSignalRouter::sigRequestNodeReselection(KisSharedPtr<KisNode>, QList<KisSharedPtr<KisNode> > const&) (this=this@entry=0x8bc5778, _t1=..., _t2=...) at /home/boud/dev/build/libs/image/moc_kis_image_signal_router.cpp:298
#63 0x00007fe0c1bcc24b in KisImageSignalRouter::slotNotification(KisImageSignalType) (this=this@entry=0x8bc5778, type=...) at /home/boud/dev/krita/libs/image/kis_image_signal_router.cpp:132
#64 0x00007fe0c1cf7ce5 in KisImageSignalRouter::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x8bc5778, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/boud/dev/build/libs/image/moc_kis_image_signal_router.cpp:142
#65 0x00007fe0bb90bac6 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#66 0x00007fe0bc5bee7c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#67 0x00007fe0bc5c3cc8 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#68 0x00007fe0c2929e10 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x8bc5778, event=0x7fe06c005f10) at /home/boud/dev/krita/libs/ui/KisApplication.cpp:514
#69 0x00007fe0bb8dae95 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#70 0x00007fe0bb8dd057 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib64/libQt5Core.so.5
#71 0x00007fe0bb9328f3 in  () at /usr/lib64/libQt5Core.so.5
#72 0x00007fe0b61fcc84 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#73 0x00007fe0b61fced8 in  () at /usr/lib64/libglib-2.0.so.0
#74 0x00007fe0b61fcf7c in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#75 0x00007fe0bb931d6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#76 0x00007fe0bb8d8d53 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#77 0x00007fe0bb8e08f6 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#78 0x00000000004033a8 in main(int, char**) (argc=1, argv=0x7ffda6c73c68) at /home/boud/dev/krita/krita/main.cc:178
Comment 3 Halla Rempt 2016-03-25 13:43:39 UTC
Git commit 526e1f92370608154d23d6bfcd48d32e308b808e by Boudewijn Rempt.
Committed on 25/03/2016 at 13:17.
Pushed by rempt into branch 'master'.

This assert kicks off when undoing a quick clipping group to no
good purpose: it doesn't prevent a real crash or any other bug,
it just startles the user into reporting a bug.

M  +1    -1    libs/ui/flake/kis_node_dummies_graph.cpp

http://commits.kde.org/krita/526e1f92370608154d23d6bfcd48d32e308b808e