Bug 372357 - Crash on save after adding text
Summary: Crash on save after adding text
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tool/Text (show other bugs)
Version: 3.1 Beta
Platform: macOS (DMG) macOS
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
: 372689 372785 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-11-11 19:01 UTC by Jelena
Modified: 2016-12-05 08:10 UTC (History)
3 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 Jelena 2016-11-11 19:01:14 UTC
With the latest beta (3.0.92) Krita crashes most times after adding a text and trying to save the file.

Steps to reproduce:
1. Create a new file
2. Add a text (single line or multiline makes no difference)
3. Save

Krita crashes without saving the file.
If it doesn't crash yet add a second text and save again and you will most probably see the crash.

There was a similar bug earlier: https://bugs.kde.org/show_bug.cgi?id=365643
Comment 1 Jelena 2016-11-11 19:03:51 UTC
Info: Disabling OpenGL doesn't make any difference.
Comment 2 Jelena 2016-11-11 19:08:01 UTC
Another info: This bug is new in 3.0.92. 
I switched back to 3.0.91 and doublechecked that adding text and saving worked perfectly with 3.0.91.
Comment 3 Halla Rempt 2016-11-14 11:30:30 UTC
Hi Jelena,

I'm afraid that I cannot reproduce this issue with 3.0.92, but we did change a lot of the saving code. Could you start Krita in lldb and see if you can get a backtrace?
Comment 4 Jelena 2016-11-14 12:10:27 UTC
The last lines of lldb before Krita crashed:

1 0 QEvent(CursorChange, 0x7fff5fbfbda0) QEvent(CursorChange, 0x7fff5fbfbda0)
1 0 QHelpEvent(ToolTip, 0x7fff5fbfcd28) QHelpEvent(ToolTip, 0x7fff5fbfcd28)
1 0 QKeyEvent(ShortcutOverride, Key_Control, ControlModifier) QKeyEvent(ShortcutOverride, Key_Control, ControlModifier)
1 0 QKeyEvent(KeyPress, Key_Control, ControlModifier) QKeyEvent(KeyPress, Key_Control, ControlModifier)
1 0 QKeyEvent(ShortcutOverride, Key_S, ControlModifier) QKeyEvent(ShortcutOverride, Key_S, ControlModifier)
1 0 QEvent(Leave, 0x7fff5fbfbf50) QEvent(Leave, 0x7fff5fbfbf50)
1 0 QEvent(WindowBlocked, 0x7fff5fbfc3d0) QEvent(WindowBlocked, 0x7fff5fbfc3d0)
1 0 QFocusEvent(FocusAboutToChange, OtherFocusReason) QFocusEvent(FocusAboutToChange, OtherFocusReason)
1 0 QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason) QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason)
1 0 QEvent(WindowDeactivate, 0x7fff5fbfabb0) QEvent(WindowDeactivate, 0x7fff5fbfabb0)
1 0 QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason) QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason)
1 0 QFocusEvent(FocusOut, ActiveWindowFocusReason) QFocusEvent(FocusOut, ActiveWindowFocusReason)
1 0 QPaintEvent(Paint, 0x7fff5fbfa3b0) QPaintEvent(Paint, 0x7fff5fbfa3b0)
1 0 QEvent(WindowUnblocked, 0x7fff5fbfade0) QEvent(WindowUnblocked, 0x7fff5fbfade0)
1 0 QEvent(WindowActivate, 0x7fff5fbfbe48) QEvent(WindowActivate, 0x7fff5fbfbe48)
1 0 QEnterEvent(QPoint(0,0)) QEnterEvent(QPoint(0,0))
1 0 QFocusEvent(FocusIn, ActiveWindowFocusReason) QFocusEvent(FocusIn, ActiveWindowFocusReason)
1 0 QInputMethodQueryEvent(queries=0x101, {}) QInputMethodQueryEvent(queries=0x101, {})
1 0 QInputMethodQueryEvent(queries=0x101, {}) QInputMethodQueryEvent(queries=0x101, {})
1 0 QKeyEvent(KeyRelease, Key_Return, text="\r") QKeyEvent(KeyRelease, Key_Return, text="\r")
1 0 QPaintEvent(Paint, 0x7fff5fbfb8d0) QPaintEvent(Paint, 0x7fff5fbfb8d0)
1 0 QEnterEvent(QPoint(269,313)) QEnterEvent(QPoint(269,313))
Process 41035 stopped
* thread #1: tid = 0x2b65f6, 0x0000000101367a25 libkritaflake.15.dylib`KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) + 101, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x0000000101367a25 libkritaflake.15.dylib`KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) + 101
libkritaflake.15.dylib`KoShapeManager::paint:
->  0x101367a25 <+101>: movq   0x28(%rax), %rbx
    0x101367a29 <+105>: movq   %r12, %rdi
    0x101367a2c <+108>: callq  0x101448c94               ; symbol stub for: KisPaintingTweaks::safeClipBoundingRect(QPainter const&)
    0x101367a31 <+113>: cvtsi2sdl %eax, %xmm0
Comment 5 Jelena 2016-11-14 12:15:16 UTC
And another one if that should help.
Steps: Open Krita - new Docuent - add text - save - crash:

1 0 QKeyEvent(ShortcutOverride, Key_Control, ControlModifier) QKeyEvent(ShortcutOverride, Key_Control, ControlModifier)
1 0 QKeyEvent(KeyPress, Key_Control, ControlModifier) QKeyEvent(KeyPress, Key_Control, ControlModifier)
1 0 QKeyEvent(ShortcutOverride, Key_S, ControlModifier) QKeyEvent(ShortcutOverride, Key_S, ControlModifier)
1 0 QEvent(Leave, 0x7fff5fbfbf50) QEvent(Leave, 0x7fff5fbfbf50)
1 0 QEvent(WindowBlocked, 0x7fff5fbfc3d0) QEvent(WindowBlocked, 0x7fff5fbfc3d0)
1 0 QFocusEvent(FocusAboutToChange, OtherFocusReason) QFocusEvent(FocusAboutToChange, OtherFocusReason)
1 0 QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason) QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason)
1 0 QEvent(WindowDeactivate, 0x7fff5fbfabb0) QEvent(WindowDeactivate, 0x7fff5fbfabb0)
1 0 QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason) QFocusEvent(FocusAboutToChange, ActiveWindowFocusReason)
1 0 QFocusEvent(FocusOut, ActiveWindowFocusReason) QFocusEvent(FocusOut, ActiveWindowFocusReason)
1 0 QPaintEvent(Paint, 0x7fff5fbfa3b0) QPaintEvent(Paint, 0x7fff5fbfa3b0)
1 0 QEvent(WindowUnblocked, 0x7fff5fbf9870) QEvent(WindowUnblocked, 0x7fff5fbf9870)
1 0 QEvent(WindowActivate, 0x7fff5fbface8) QEvent(WindowActivate, 0x7fff5fbface8)
1 0 QEnterEvent(QPoint(0,0)) QEnterEvent(QPoint(0,0))
1 0 QFocusEvent(FocusIn, ActiveWindowFocusReason) QFocusEvent(FocusIn, ActiveWindowFocusReason)
1 0 QInputMethodQueryEvent(queries=0x101, {}) QInputMethodQueryEvent(queries=0x101, {})
1 0 QInputMethodQueryEvent(queries=0x101, {}) QInputMethodQueryEvent(queries=0x101, {})
1 0 QPaintEvent(Paint, 0x7fff5fbfb8d0) QPaintEvent(Paint, 0x7fff5fbfb8d0)
1 0 QEnterEvent(QPoint(660,313)) QEnterEvent(QPoint(660,313))
Process 41198 stopped
* thread #1: tid = 0x2b7bde, 0x0000000101367a25 libkritaflake.15.dylib`KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) + 101, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x0000000101367a25 libkritaflake.15.dylib`KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) + 101
libkritaflake.15.dylib`KoShapeManager::paint:
->  0x101367a25 <+101>: movq   0x28(%rax), %rbx
    0x101367a29 <+105>: movq   %r12, %rdi
    0x101367a2c <+108>: callq  0x101448c94               ; symbol stub for: KisPaintingTweaks::safeClipBoundingRect(QPainter const&)
    0x101367a31 <+113>: cvtsi2sdl %eax, %xmm0
Comment 6 Halla Rempt 2016-11-21 09:33:44 UTC
*** Bug 372689 has been marked as a duplicate of this bug. ***
Comment 7 Halla Rempt 2016-11-21 09:34:28 UTC
I managed to reproduce it today, with a smilar backtrace to yours. It doesn't always happen, and only seems to happen on OSX. I suspect a timing issue.
Comment 8 Halla Rempt 2016-11-21 11:37:57 UTC
Valgrind output showing the cause of the problem (no idea why this doesn't crash on windows or linux...):

==27393== Invalid read of size 8
==27393==    at 0x762888B: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==    by 0x11A9DED7: ??? (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==    by 0x11A9DF7B: g_main_context_iteration (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CE13: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:52)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==    by 0x11A9DED7: ??? (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CE78: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==    by 0x11A9DED7: ??? (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CC50: KoViewConverter::viewToDocument(QSizeF const&) const (KoViewConverter.cpp:66)
==27393==    by 0x768CEA4: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CCB0: KoViewConverter::viewToDocument(QSizeF const&) const (KoViewConverter.cpp:68)
==27393==    by 0x768CEA4: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768C940: KoViewConverter::viewToDocumentY(double) const (KoViewConverter.cpp:94)
==27393==    by 0x768CCBD: KoViewConverter::viewToDocument(QSizeF const&) const (KoViewConverter.cpp:68)
==27393==    by 0x768CEA4: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CCBE: KoViewConverter::viewToDocument(QSizeF const&) const (KoViewConverter.cpp:68)
==27393==    by 0x768CEA4: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768C930: KoViewConverter::viewToDocumentX(double) const (KoViewConverter.cpp:89)
==27393==    by 0x768CCD0: KoViewConverter::viewToDocument(QSizeF const&) const (KoViewConverter.cpp:68)
==27393==    by 0x768CEA4: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CEA5: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==    by 0x11A9DED7: ??? (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CD30: KoViewConverter::viewToDocument(QPointF const&) const (KoViewConverter.cpp:38)
==27393==    by 0x768CED7: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CD90: KoViewConverter::viewToDocument(QPointF const&) const (KoViewConverter.cpp:40)
==27393==    by 0x768CED7: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768C940: KoViewConverter::viewToDocumentY(double) const (KoViewConverter.cpp:94)
==27393==    by 0x768CD9D: KoViewConverter::viewToDocument(QPointF const&) const (KoViewConverter.cpp:40)
==27393==    by 0x768CED7: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768CD9E: KoViewConverter::viewToDocument(QPointF const&) const (KoViewConverter.cpp:40)
==27393==    by 0x768CED7: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0x11A9DC83: g_main_context_dispatch (in /usr/lib64/libglib-2.0.so.0.4400.1)
==27393==  Address 0x40830800 is 0 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
==27393== Invalid read of size 8
==27393==    at 0x768C930: KoViewConverter::viewToDocumentX(double) const (KoViewConverter.cpp:89)
==27393==    by 0x768CDB0: KoViewConverter::viewToDocument(QPointF const&) const (KoViewConverter.cpp:40)
==27393==    by 0x768CED7: KoViewConverter::viewToDocument(QRectF const&) const (KoViewConverter.cpp:54)
==27393==    by 0x762890A: KoShapeManager::paint(QPainter&, KoViewConverter const&, bool) (KoShapeManager.cpp:232)
==27393==    by 0x510C063: KisShapeLayerCanvas::repaint() (kis_shape_layer_canvas.cpp:138)
==27393==    by 0xE9569F5: QObject::event(QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xD5BCDEB: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0xD5C1449: QApplication::notify(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Widgets.so.5.6.1)
==27393==    by 0x5323FC6: KisApplication::notify(QObject*, QEvent*) (KisApplication.cpp:519)
==27393==    by 0xE92B8E4: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE92D6C9: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==    by 0xE97C6D2: ??? (in /home/boud/dev/deps/lib/libQt5Core.so.5.6.1)
==27393==  Address 0x40830808 is 8 bytes inside a block of size 32 free'd
==27393==    at 0x4C2A84C: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27393==    by 0x5105457: KisShapeLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_shape_layer.cc:264)
==27393==    by 0x67F0C11: operator() (kis_layer.cc:329)
==27393==    by 0x67F0C11: std::_Function_handler<void (KisSharedPtr<KisNode>), KisLayer::setImage(KisWeakSharedPtr<KisImage>)::{lambda(KisSharedPtr<KisNode>)#1}>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisNode>) (functional:2071)
==27393==    by 0x67F8E0B: operator() (functional:2471)
==27393==    by 0x67F8E0B: KisLayerUtils::recursiveApplyNodes(KisSharedPtr<KisNode>, std::function<void (KisSharedPtr<KisNode>)>) (kis_layer_utils.cpp:1244)
==27393==    by 0x67F0E4B: KisLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_layer.cc:330)
==27393==    by 0x67D513C: KisGroupLayer::setImage(KisWeakSharedPtr<KisImage>) (kis_group_layer.cc:142)
==27393==    by 0x67E19A3: KisImage::KisImage(KisImage const&, KisUndoStore*, bool) (kis_image.cc:292)
==27393==    by 0x67E2167: KisImage::clone(bool) (kis_image.cc:267)
==27393==    by 0x532CE50: KisDocument::prepareLocksForSaving() (KisDocument.cpp:1673)
==27393==    by 0x5330A30: KisDocument::saveFile(QString const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:636)
==27393==    by 0x5331A52: KisDocument::save(KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:615)
==27393==    by 0x5331DB8: KisDocument::saveAs(QUrl const&, KisPinnedSharedPtr<KisPropertiesConfiguration>) (KisDocument.cpp:588)
==27393== 
krita(27393)/(default) unknown: SAFE ASSERT (krita): "image->locked()" in file /home/boud/dev/impex/libs/ui/KisImportExportManager.cpp, line 231
Comment 9 Halla Rempt 2016-11-22 15:30:25 UTC
*** Bug 372785 has been marked as a duplicate of this bug. ***
Comment 10 Dmitry Kazakov 2016-11-28 12:47:04 UTC
Git commit 3dffd58b401a04699d24521e53492f3214f1caab by Dmitry Kazakov.
Committed on 28/11/2016 at 12:42.
Pushed by dkazakov into branch 'rempt/impex-refactoring'.

Fix for a crash when saving a document after adding a text shape

Summary:
This patch should fix a crash that happens after
KisShapeLayerCanvas::repaint() is called on a cloned image. Actually,
KisShapeLayer::setImage() was implemented incorrectly. It deleted
m_d->converter and m_d->paintDevice, although canvas still owned a link
to them. Therefore the next coming update crashed the application.

Test Plan:
I could never reproduce the original bug, I only used the results of
Boud's valgrind output. So please test the original bug with the patch
before I push it into 3.1 and impex.

Reviewers: #krita, rempt

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

M  +9    -14   libs/ui/flake/kis_shape_layer.cc
M  +10   -4    libs/ui/flake/kis_shape_layer_canvas.cpp
M  +6    -3    libs/ui/flake/kis_shape_layer_canvas.h
M  +5    -0    libs/ui/kis_image_view_converter.cpp
M  +3    -1    libs/ui/kis_image_view_converter.h

https://commits.kde.org/krita/3dffd58b401a04699d24521e53492f3214f1caab
Comment 11 Dmitry Kazakov 2016-11-28 12:59:41 UTC
Git commit a4bf4835af64a4ac019531257b62646479a90226 by Dmitry Kazakov.
Committed on 28/11/2016 at 12:58.
Pushed by dkazakov into branch 'krita/3.1'.

Fix for a crash when saving a document after adding a text shape

Summary:
This patch should fix a crash that happens after
KisShapeLayerCanvas::repaint() is called on a cloned image. Actually,
KisShapeLayer::setImage() was implemented incorrectly. It deleted
m_d->converter and m_d->paintDevice, although canvas still owned a link
to them. Therefore the next coming update crashed the application.

Test Plan:
I could never reproduce the original bug, I only used the results of
Boud's valgrind output. So please test the original bug with the patch
before I push it into 3.1 and impex.

Reviewers: #krita, rempt

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

M  +9    -15   libs/ui/flake/kis_shape_layer.cc
M  +10   -4    libs/ui/flake/kis_shape_layer_canvas.cpp
M  +6    -3    libs/ui/flake/kis_shape_layer_canvas.h
M  +5    -0    libs/ui/kis_image_view_converter.cpp
M  +3    -1    libs/ui/kis_image_view_converter.h

https://commits.kde.org/krita/a4bf4835af64a4ac019531257b62646479a90226
Comment 12 Jelena 2016-12-05 08:10:28 UTC
For testing: Is there a DMG build anywhere which incorporates the bugfix?