Summary: | After applying transform mask on a layer, if you click in one of the history states in undo history docker, Krita crashes | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Raghavendra kamath <raghu> |
Component: | Tools/Transform | Assignee: | Dmitry Kazakov <dimula73> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | dimula73, smjert |
Priority: | NOR | ||
Version First Reported In: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/calligra/87fa0eb8b7d3d14a180309c6ddda1c4e218e60f1 | Version Fixed In: | |
Sentry Crash Report: |
Description
Raghavendra kamath
2015-07-02 10:41:52 UTC
To me is seems to happen only when selecting the first Undo item (Freehand brush stroke), probably selecting an undo item without the transform mask break something (it crashes while trying get the transform mask parent layer). Git commit de3e3b5a8ed84d484e93dc26164b07dfe12fdba0 by Dmitry Kazakov. Committed on 17/08/2015 at 12:17. Pushed by dkazakov into branch 'calligra/2.9'. Add a barrier between sequentially undone commands with setIndex Some of the commands are undone asynchronously using strokes and the other are undone directly by simply executing the code in the loop. To avoid implicit reordering of the commands which undo/redo we should add barriers between single commands. M +6 -0 krita/ui/KisDocument.cpp M +13 -2 libs/kundo2/kundo2stack.cpp M +3 -0 libs/kundo2/kundo2stack.h http://commits.kde.org/calligra/de3e3b5a8ed84d484e93dc26164b07dfe12fdba0 Git commit 87fa0eb8b7d3d14a180309c6ddda1c4e218e60f1 by Dmitry Kazakov. Committed on 17/08/2015 at 12:17. Pushed by dkazakov into branch 'calligra/2.9'. Fix a severe crash in Transformation Masks We should be really careful with makeCloneFrom() calls. There is a simple rule of thumb: "Use makeCloneFrom or makeCloneFromRough if and only of you are the only owner of the paint device and you are 100% sure no other thread has access to it" The reason is simple. These call change offset and a color space of the paint device, so all the other users with get a SIGSEGV with a non-zero probability. If you want to copy data to a device, which is shared with someone else, use KisPainter::copyAreaOptimized() instead. It is totlly safe. M +2 -1 krita/image/kis_transform_mask.cpp http://commits.kde.org/calligra/87fa0eb8b7d3d14a180309c6ddda1c4e218e60f1 |