Summary: | [Crash] Krita crashes when merging down several layers one by one and hitting undo | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Raghavendra kamath <raghu> |
Component: | General | Assignee: | Krita Bugs <krita-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | dimula73, halla |
Priority: | NOR | Keywords: | drkonqi |
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | https://commits.kde.org/krita/a49ec4b074651cf93b32c41529d37ceb07eec307 | Version Fixed In: |
Description
Raghavendra kamath
2016-11-21 09:44:57 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... 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. 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. Confirmed. Can be reproduces If press Ctrl+E and Ctrl+Z sequentially very quickly. 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 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 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 |