Summary: | Crash when selecting a third layer in the layerbox | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Halla Rempt <halla> |
Component: | Layer Stack | Assignee: | amyspark <amy> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | amy |
Priority: | NOR | ||
Version: | nightly build (please specify the git hash!) | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | macOS | ||
Latest Commit: | https://invent.kde.org/graphics/krita/commit/82d48e2bcbadb4c69cecd86e82950b7fbe5bff37 | Version Fixed In: | |
Sentry Crash Report: |
Description
Halla Rempt
2022-08-31 13:14:49 UTC
I could reproduce this a second time. I selected two layers, enabled the move tool and moved those layers together. Then with the move tool still active, I clicked the eye icon of a third, invisible layer to make it visible. Main thread is not at fault, crash occurs in a worker thread because of null transaction data: [Inline Frame] kritaui.dll!KisTransaction::endAndTake() Line 78 (e:\krita-win\src\libs\image\kis_transaction.h:78) kritaui.dll!MovePaintableNodeStrategy::finishMove(KUndo2Command * parentCommand) Line 175 (e:\krita-win\src\libs\ui\tool\strokes\move_stroke_strategy.cpp:175) [Inline Frame] kritaui.dll!MoveStrokeStrategy::finishStrokeCallback::__l5::<lambda>(KisSharedPtr<KisNode>) Line 370 (e:\krita-win\src\libs\ui\tool\strokes\move_stroke_strategy.cpp:370) kritaui.dll!MoveStrokeStrategy::recursiveApplyNodes::__l5::<lambda>(KisSharedPtr<KisNode> node) Line 208 (e:\krita-win\src\libs\ui\tool\strokes\move_stroke_strategy.cpp:208) kritaui.dll!KisLayerUtils::recursiveApplyNodes<KisSharedPtr<KisNode>,void <lambda>(KisSharedPtr<KisNode>)>(KisSharedPtr<KisNode> node, MoveStrokeStrategy::recursiveApplyNodes::__l5::void <lambda>(KisSharedPtr<KisNode>) func) Line 211 (e:\krita-win\src\libs\image\kis_layer_utils.h:211) kritaui.dll!MoveStrokeStrategy::recursiveApplyNodes<void <lambda>(KisSharedPtr<KisNode>)>(QList<KisSharedPtr<KisNode>> nodes, MoveStrokeStrategy::finishStrokeCallback::__l5::void <lambda>(KisSharedPtr<KisNode>) && func) Line 204 (e:\krita-win\src\libs\ui\tool\strokes\move_stroke_strategy.cpp:204) kritaui.dll!MoveStrokeStrategy::finishStrokeCallback() Line 373 (e:\krita-win\src\libs\ui\tool\strokes\move_stroke_strategy.cpp:373) [Inline Frame] kritaimage.dll!KisUpdateJobItem::runImpl() Line 100 (e:\krita-win\src\libs\image\kis_update_job_item.h:100) kritaimage.dll!KisUpdateJobItem::run() Line 49 (e:\krita-win\src\libs\image\kis_update_job_item.h:49) Qt5Core.dll!QThreadPoolThread::run() Line 99 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\thread\qthreadpool.cpp:99) Qt5Core.dll!QThreadPrivate::start(void * arg) Line 407 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\thread\qthread_win.cpp:407) kernel32.dll!BaseThreadInitThunk() (Origen desconocido:0) ntdll.dll!RtlUserThreadStart() (Origen desconocido:0) Commit 785619b3ca Regression comes from: commit d138a617ed0456181cc839890035d20fba0d718b Author: Dmitry Kazakov <dimula73@gmail.com> Date: Tue Aug 16 11:38:31 2022 +0300 Avoid double updates when moving paintable nodes Bascially, we need to disable internal updates generated by KisTransaction in the move tool, because updates are issued at the higher level by a separate command. The commit disabled the update mechanism, but then used KisTransaction::endAndTake() which needs that bit of data. Further to that regression, the actual neutering of this particular way of instantiating KisTransaction took place here: commit 30d5f8916b5aaa132fca97dcc03d2fd38b4b8530 Author: Eoin O'Neill <eoinoneill1991@gmail.com> Date: Tue Mar 30 15:34:34 2021 -0700 Transaction changes. Removed autokey-duplicate usecase due to undo-related bugs. A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1564 Git commit a1c960421e0cc26c815bc9d50ed1d2db7dabd4f9 by Dmitry Kazakov, on behalf of L. E. Segovia. Committed on 05/09/2022 at 13:09. Pushed by dkazakov into branch 'master'. KisTransaction: fix dud assertions Bug 458546 should've been caught by any of the assertions, but since they depend on a debug version of Qt, the exception slips past... M +19 -15 libs/image/kis_transaction.h https://invent.kde.org/graphics/krita/commit/a1c960421e0cc26c815bc9d50ed1d2db7dabd4f9 Git commit cc87eb078dc30ef1e3b0b411d6da628339a54d0a by Dmitry Kazakov, on behalf of L. E. Segovia. Committed on 05/09/2022 at 13:09. Pushed by dkazakov into branch 'master'. MoveStrokeStrategy: fix false recursion in stroke finalization The nested recursion over m_nodes means that the strategies will be executed at least twice for each node. This is inconsistent with the rest of commit 4a427ee619a507c80e3f5599221591e802a38a54, so let's fix that. CCMAIL: dimula73@gmail.com M +6 -7 libs/ui/tool/strokes/move_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/cc87eb078dc30ef1e3b0b411d6da628339a54d0a Git commit 82d48e2bcbadb4c69cecd86e82950b7fbe5bff37 by Dmitry Kazakov, on behalf of L. E. Segovia. Committed on 06/09/2022 at 09:51. Pushed by dkazakov into branch 'krita/5.1'. MoveStrokeStrategy: fix false recursion in stroke finalization The nested recursion over m_nodes means that the strategies will be executed at least twice for each node. This is inconsistent with the rest of commit 4a427ee619a507c80e3f5599221591e802a38a54, so let's fix that. CCMAIL: dimula73@gmail.com (cherry picked from commit cc87eb078dc30ef1e3b0b411d6da628339a54d0a) M +6 -7 libs/ui/tool/strokes/move_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/82d48e2bcbadb4c69cecd86e82950b7fbe5bff37 Git commit f22b8c182dd623d423eed3996af7a2050ac22cc7 by Dmitry Kazakov, on behalf of L. E. Segovia. Committed on 06/09/2022 at 09:51. Pushed by dkazakov into branch 'krita/5.1'. KisTransaction: fix dud assertions Bug 458546 should've been caught by any of the assertions, but since they depend on a debug version of Qt, the exception slips past... (cherry picked from commit a1c960421e0cc26c815bc9d50ed1d2db7dabd4f9) M +19 -15 libs/image/kis_transaction.h https://invent.kde.org/graphics/krita/commit/f22b8c182dd623d423eed3996af7a2050ac22cc7 |