Bug 372724 - [Crash] Krita crashes when merging down several layers one by one and hitting undo
Summary: [Crash] Krita crashes when merging down several layers one by one and hitting...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2016-11-21 09:44 UTC by Raghavendra kamath
Modified: 2016-12-07 08:21 UTC (History)
2 users (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 Raghavendra kamath 2016-11-21 09:44:57 UTC
Application: krita (3.0.92)
 (Compiled from sources)
Qt Version: 5.7.0
Frameworks Version: 5.28.0
Operating System: Linux 4.8.8-2-ARCH x86_64
Distribution (Platform): Archlinux Packages

-- Information about the crash:
- What I was doing when the application crashed:
I had close 5-6 layers and I was merging them one by one and suddenly all canvas went transparent and only layer was left in the layer stack, and when I undid the last merge operation to get back my layers back krita crashed

The crash can be reproduced sometimes.

-- Backtrace:
Application: Krita (krita), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fe1aeb21800 (LWP 7443))]

Thread 13 (Thread 0x7fe0f67fc700 (LWP 8069)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 12 (Thread 0x7fe0f6ffd700 (LWP 8068)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 11 (Thread 0x7fe1013fd700 (LWP 8067)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 10 (Thread 0x7fe1025ff700 (LWP 8066)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 9 (Thread 0x7fe0f57fa700 (LWP 8065)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 8 (Thread 0x7fe0f5ffb700 (LWP 8064)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7fe0f7fff700 (LWP 8063)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 6 (Thread 0x7fe0f77fe700 (LWP 8062)):
#0  0x00007fe1a22fa4b8 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452eb66 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a452a274 in ?? () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7fe15150d700 (LWP 7458)):
#0  0x00007fe1a22fa10f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452ec2b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a58107d1 in ?? () from /usr/lib/libQt5Widgets.so.5
#3  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#5  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7fe151d0e700 (LWP 7456)):
#0  0x00007fe1a22fa10f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452ec2b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a4527e26 in QSemaphore::tryAcquire(int, int) () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1ad0840d3 in KisTileDataSwapper::waitForWork (this=<optimized out>) at /home/raghu/kf5/src/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#4  0x00007fe1ad0842da in KisTileDataSwapper::run (this=0x7fe1ad5419a0 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder+64>) at /home/raghu/kf5/src/krita/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#6  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#7  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7fe15250f700 (LWP 7455)):
#0  0x00007fe1a22fa10f in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007fe1a452ec2b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQt5Core.so.5
#2  0x00007fe1a4527b33 in QSemaphore::acquire(int) () from /usr/lib/libQt5Core.so.5
#3  0x00007fe1ad06a5ce in KisTileDataPooler::waitForWork (this=0x7fe1ad541960 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder>) at /home/raghu/kf5/src/krita/libs/image/tiles3/kis_tile_data_pooler.cc:165
#4  0x00007fe1ad06ad1a in KisTileDataPooler::run (this=0x7fe1ad541960 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder>) at /home/raghu/kf5/src/krita/libs/image/tiles3/kis_tile_data_pooler.cc:187
#5  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#6  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#7  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7fe18d323700 (LWP 7445)):
#0  0x00007fe1a391f48d in poll () from /usr/lib/libc.so.6
#1  0x00007fe19f90b786 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007fe19f90b89c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007fe1a475c72b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007fe1a470623a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007fe1a45290f3 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007fe1a7eb0e55 in ?? () from /usr/lib/libQt5DBus.so.5
#7  0x00007fe1a452dd78 in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007fe1a22f4454 in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007fe1a39287df in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7fe1aeb21800 (LWP 7443)):
[KCrash Handler]
#6  KoShape::isSelectable (this=this@entry=0x0) at /home/raghu/kf5/src/krita/libs/flake/KoShape.cpp:1085
#7  0x00007fe1ac24d2e7 in KoSelection::select (this=this@entry=0xb6c17a0, shape=<optimized out>, shape@entry=0x0, recursive=recursive@entry=true) at /home/raghu/kf5/src/krita/libs/flake/KoSelection.cpp:135
#8  0x00007fe1ae325491 in KisNodeManager::Private::activateNodeImpl (this=0x9283b30, node=...) at /home/raghu/kf5/src/krita/libs/ui/kis_node_manager.cpp:152
#9  0x00007fe1ae325fa3 in KisNodeManager::slotSomethingActivatedNodeImpl (this=this@entry=0x93b5668, node=...) at /home/raghu/kf5/src/krita/libs/ui/kis_node_manager.cpp:561
#10 0x00007fe1ae3261c6 in KisNodeManager::slotNonUiActivatedNode (this=this@entry=0x93b5668, node=...) at /home/raghu/kf5/src/krita/libs/ui/kis_node_manager.cpp:577
#11 0x00007fe1ae328645 in KisNodeManager::slotImageRequestNodeReselection (this=this@entry=0x93b5668, activeNode=..., selectedNodes=...) at /home/raghu/kf5/src/krita/libs/ui/kis_node_manager.cpp:687
#12 0x00007fe1ae5a0f14 in KisNodeManager::qt_static_metacall (_o=0x93b5668, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/raghu/kf5/build/libs/ui/moc_kis_node_manager.cpp:329
#13 0x00007fe1a4733659 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#14 0x00007fe1ad27fdea in KisImage::sigRequestNodeReselection (this=<optimized out>, _t1=..., _t2=...) at /home/raghu/kf5/build/libs/image/moc_kis_image.cpp:663
#15 0x00007fe1ad282d51 in KisImage::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=0x7ffe162873c0) at /home/raghu/kf5/build/libs/image/moc_kis_image.cpp:297
#16 0x00007fe1a4733659 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#17 0x00007fe1ad28029a in KisImageSignalRouter::sigRequestNodeReselection (this=this@entry=0xa450140, _t1=..., _t2=...) at /home/raghu/kf5/build/libs/image/moc_kis_image_signal_router.cpp:309
#18 0x00007fe1ad161778 in KisImageSignalRouter::slotNotification (this=this@entry=0xa450140, type=...) at /home/raghu/kf5/src/krita/libs/image/kis_image_signal_router.cpp:153
#19 0x00007fe1ad281e76 in KisImageSignalRouter::qt_static_metacall (_o=0xa450140, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/raghu/kf5/build/libs/image/moc_kis_image_signal_router.cpp:142
#20 0x00007fe1a47344b9 in QObject::event(QEvent*) () from /usr/lib/libQt5Core.so.5
#21 0x00007fe1a55ece0c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#22 0x00007fe1a55f4581 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#23 0x00007fe1ae4debc7 in KisApplication::notify (this=<optimized out>, receiver=0xa450140, event=0x7fe1082f8380) at /home/raghu/kf5/src/krita/libs/ui/KisApplication.cpp:519
#24 0x00007fe1a4707de0 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#25 0x00007fe1a470a56d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt5Core.so.5
#26 0x00007fe1a475c303 in ?? () from /usr/lib/libQt5Core.so.5
#27 0x00007fe19f90b587 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#28 0x00007fe19f90b7f0 in ?? () from /usr/lib/libglib-2.0.so.0
#29 0x00007fe19f90b89c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#30 0x00007fe1a475c70f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#31 0x00007fe1a470623a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#32 0x00007fe1a470e73c in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#33 0x0000000000404f54 in main (argc=<optimized out>, argv=<optimized out>) at /home/raghu/kf5/src/krita/krita/main.cc:258

Possible duplicates by query: bug 371124.

Reported using DrKonqi
Comment 1 Halla Rempt 2016-11-21 09:54:30 UTC
Weird... You should have had an assert instead of a crash at that point, if you build with RelWithDebInfo or KritaDevs as a build type...
Comment 2 Halla Rempt 2016-11-21 09:58:02 UTC
Oh, adn there's definitely something wrong with undoing a layer merge. It gives lots of messages like this:

krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(1024,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(512,0 512x512)
krita.core:      Please report a bug describing how you got this message.
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(0,0 512x512)
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(2048,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(3072,0 436x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(1536,0 512x512)
krita.core:      Please report a bug describing how you got this message.
krita.core:      Please report a bug describing how you got this message.
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfb6660, name = "Layer 1") Requested rect: QRect(2560,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(512,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(0,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(2560,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(3072,0 436x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(1536,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(1024,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbfc9cd0, name = "Layer 2") Requested rect: QRect(2048,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(1536,0 512x512)
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(1024,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(3072,0 436x512)
krita.core:      Please report a bug describing how you got this message.
krita.core:      Please report a bug describing how you got this message.
krita.core:      There must be an inconsistency in the walkers happened!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(512,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Please report a bug describing how you got this message.
krita.core:      Please report a bug describing how you got this message.
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(0,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(2048,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xbec24e0, name = "Layer 3") Requested rect: QRect(2560,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(1536,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(3072,0 436x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(1024,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(2048,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(0,0 512x512)
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(2560,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0xcaeee80, name = "Layer 4") Requested rect: QRect(512,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(3072,0 436x512)
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(2048,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      There must be an inconsistency in the walkers happened!
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Please report a bug describing how you got this message.
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(512,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(2560,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(0,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(1536,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
krita.core: BUG: The walker hasn't reached the root layer!
krita.core:      Start node: KisPaintLayer(0x14649680, name = "Layer 5") Requested rect: QRect(1024,0 512x512)
krita.core:      There must be an inconsistency in the walkers happened!
krita.core:      Please report a bug describing how you got this message.
Comment 3 Halla Rempt 2016-11-21 10:00:03 UTC
It would be easy enough to rework the code to not have the asserts and check whether the shape pointer is 0, instead of asserting -- but the underlying problem is more worrying.
Comment 4 Dmitry Kazakov 2016-11-21 11:55:03 UTC
Confirmed. Can be reproduces If press Ctrl+E and Ctrl+Z sequentially very quickly.
Comment 5 Raghavendra kamath 2016-12-06 14:27:44 UTC
I tested the D3449 diff by dmitry on the phabricator and i couldn't reproduce the issue. I tried hard to repeated undo and merge also used large brush strokes but i couldn't crash krita. however I got many waiting for the action to get completed dialog which is normal I guess
Comment 6 Dmitry Kazakov 2016-12-07 07:58:33 UTC
Git commit cdf5b230143d7733327adbb7ef7218afc6010b3c by Dmitry Kazakov.
Committed on 07/12/2016 at 07:13.
Pushed by dkazakov into branch 'krita/3.1'.

Implement a feedback for barrier blocking when doing some actions

Summary:
Some actions should not be started before all the previous actions
are finished. That is especially true for the actions that work
with layers stack, like "Merge Down" and "Flatten".

Now KisDelayedSaveDialog is used not only for saving, but also for
waiting before doing usual actions. It also has a busy-loop timeout of
1 second before showing up, for not distracting painters from their
workflow when the action is postponed only a little bit.
Fixes T4593

Test Plan:
Basically, the steps like in bug 372724.

1) Select multiple layers
2) Start a long stroke (1000px colorsmudge brush is a good example)
3) Press Ctrl+E ***multiple*** times quickly
4) After all the background work is finished, press Ctrl+Z

There should be no crash, and the result should be somewhat expected.

Repeat the same for:
1) Merge down
2) Flatten Image
3) Flatten Layer
4) Transform a layer using "Layers" menu(?)

Reviewers: #krita, timotheegiet, scottpetrovic

Maniphest Tasks: T4593

Differential Revision: https://phabricator.kde.org/D3449

M  +4    -2    libs/image/kis_layer.cc
M  +2    -0    libs/image/kis_legacy_undo_adapter.cpp
M  +2    -1    libs/ui/KisMainWindow.cpp
M  +23   -2    libs/ui/KisViewManager.cpp
M  +18   -0    libs/ui/KisViewManager.h
M  +1    -0    libs/ui/actions/kis_selection_action_factories.cpp
M  +6    -6    libs/ui/canvas/kis_canvas2.cpp
M  +33   -5    libs/ui/dialogs/kis_delayed_save_dialog.cpp
M  +8    -1    libs/ui/dialogs/kis_delayed_save_dialog.h
M  +3    -1    libs/ui/kis_filter_manager.cc
M  +19   -5    libs/ui/kis_layer_manager.cc
M  +3    -2    libs/ui/kis_node_manager.cpp
M  +4    -0    libs/ui/tool/kis_tool.cc
M  +3    -3    plugins/extensions/clonesarray/dlg_clonesarray.cpp
M  +2    -0    plugins/extensions/waveletdecompose/waveletdecompose.cpp

https://commits.kde.org/krita/cdf5b230143d7733327adbb7ef7218afc6010b3c
Comment 7 Dmitry Kazakov 2016-12-07 08:21:58 UTC
Git commit a49ec4b074651cf93b32c41529d37ceb07eec307 by Dmitry Kazakov.
Committed on 07/12/2016 at 07:59.
Pushed by dkazakov into branch 'rempt/impex-refactoring'.

Implement a feedback for barrier blocking when doing some actions

Summary:
Some actions should not be started before all the previous actions
are finished. That is especially true for the actions that work
with layers stack, like "Merge Down" and "Flatten".

Now KisDelayedSaveDialog is used not only for saving, but also for
waiting before doing usual actions. It also has a busy-loop timeout of
1 second before showing up, for not distracting painters from their
workflow when the action is postponed only a little bit.
Fixes T4593

Test Plan:
Basically, the steps like in bug 372724.

1) Select multiple layers
2) Start a long stroke (1000px colorsmudge brush is a good example)
3) Press Ctrl+E ***multiple*** times quickly
4) After all the background work is finished, press Ctrl+Z

There should be no crash, and the result should be somewhat expected.

Repeat the same for:
1) Merge down
2) Flatten Image
3) Flatten Layer
4) Transform a layer using "Layers" menu(?)

Reviewers: #krita, timotheegiet, scottpetrovic

Maniphest Tasks: T4593

Differential Revision: https://phabricator.kde.org/D3449

M  +4    -2    libs/image/kis_layer.cc
M  +2    -0    libs/image/kis_legacy_undo_adapter.cpp
M  +2    -1    libs/ui/KisMainWindow.cpp
M  +23   -2    libs/ui/KisViewManager.cpp
M  +18   -0    libs/ui/KisViewManager.h
M  +1    -0    libs/ui/actions/kis_selection_action_factories.cpp
M  +6    -6    libs/ui/canvas/kis_canvas2.cpp
M  +33   -5    libs/ui/dialogs/kis_delayed_save_dialog.cpp
M  +8    -1    libs/ui/dialogs/kis_delayed_save_dialog.h
M  +3    -1    libs/ui/kis_filter_manager.cc
M  +19   -5    libs/ui/kis_layer_manager.cc
M  +3    -2    libs/ui/kis_node_manager.cpp
M  +4    -0    libs/ui/tool/kis_tool.cc
M  +3    -3    plugins/extensions/clonesarray/dlg_clonesarray.cpp
M  +2    -0    plugins/extensions/waveletdecompose/waveletdecompose.cpp

https://commits.kde.org/krita/a49ec4b074651cf93b32c41529d37ceb07eec307