Summary: | Trying to Copy Vector Layers from one Project into another - will cause a Crash (100% Repro) | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | JJ <farfetchedjj> |
Component: | Tools/Vector | Assignee: | Dmitry Kazakov <dimula73> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | blackword_2001, bohdankornienko, dimula73, fakementary, leroyriel, lynx.mw+kde, penguinflyer2222, qampidh, raincolee, shzam, ten.maxine, yockeyjim |
Priority: | NOR | ||
Version: | 5.1.0-RC1 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Microsoft Windows | ||
Latest Commit: | https://invent.kde.org/graphics/krita/commit/4126e6dde47dc39cbfd60f359d08988052cd8c97 | Version Fixed In: | |
Attachments: | New crash information added by DrKonqi |
Description
JJ
2022-08-20 20:44:26 UTC
I can reproduce this by simply creating a Vector Layer and trying to copy/paste it in the same image, in both 5.1.0 and recent 5.2.x. Detailed backtrace from my 5.2.x build, looks like pasting expects an xyresolution and crashes because there isn't one: libkritaimage.dll!KisImage::xRes+0x0 libkritaui.dll!KisMimeData::initializeExternalNode+0xa4 [C:/mysrcdir/libs/ui/kis_mimedata.cpp @ 216] 214: KisShapeLayer *shapeLayer2 = new KisShapeLayer(*shapeLayer, shapeController); 215: > 216: if (!qFuzzyCompare(dstImage->xRes(), srcImage->xRes()) || 217: !qFuzzyCompare(dstImage->yRes(), srcImage->yRes())) { 218: libkritaui.dll!KisMimeData::tryLoadInternalNodes+0x806 [C:/mysrcdir/libs/ui/kis_mimedata.cpp @ 284] 282: KisLayerUtils::addCopyOfNameTag(node); 283: } > 284: initializeExternalNode(&node, sourceImage, image, shapeController); 285: clones << node; 286: } libkritaui.dll!KisMimeData::loadNodesFast+0x45 [C:/mysrcdir/libs/ui/kis_mimedata.cpp @ 409] 407: { 408: QList<KisNodeSP> nodes = > 409: KisMimeData::tryLoadInternalNodes(data, 410: image, 411: shapeController, libkritaui.dll!KisMimeData::insertMimeLayers+0x63 [C:/mysrcdir/libs/ui/kis_mimedata.cpp @ 451] 449: QPointF offset) 450: { > 451: QList<KisNodeSP> nodes = loadNodesFast(data, image, shapeController, copyNode /* IN-OUT */); 452: 453: if (changeOffset) { libkritaui.dll!KisNodeManager::pasteLayersFromClipboard+0x1ed [C:/mysrcdir/libs/ui/kis_node_manager.cpp @ 1492] 1490: KisNodeDummy *aboveThisDummy = parentDummy ? parentDummy->lastChild() : 0; 1491: > 1492: KisMimeData::insertMimeLayers(data, 1493: image, 1494: shapeController, libkritaui.dll!KisPasteActionFactory::run+0x151c [C:/mysrcdir/libs/ui/actions/KisPasteActionFactories.cpp @ 239] 237: } 238: }(); > 239: view->nodeManager()->pasteLayersFromClipboard(pasteAtCursorPosition, 240: offsetTopLeft); 241: return; libkritaui.dll!KisSelectionManager::paste+0x76 [C:/mysrcdir/libs/ui/kis_selection_manager.cc @ 359] 357: { 358: KisPasteActionFactory factory; > 359: factory.run(false, m_view); 360: } 361: Since Dmitry is on a break, let me take this. Git commit 44c4f74a273b1f6c0b99f56a0f96342fd81b2c47 by Sharaf Zaman. Committed on 22/08/2022 at 10:35. Pushed by szaman into branch 'master'. Fix nullptr crash: srcImage may not exist when deep-copying layers M +3 -2 libs/ui/kis_mimedata.cpp https://invent.kde.org/graphics/krita/commit/44c4f74a273b1f6c0b99f56a0f96342fd81b2c47 *** Bug 458172 has been marked as a duplicate of this bug. *** *** Bug 458276 has been marked as a duplicate of this bug. *** Git commit 39a56110b50dc1246e76e891ac575ba8e9c613b5 by L. E. Segovia, on behalf of Sharaf Zaman. Committed on 25/08/2022 at 14:29. Pushed by lsegovia into branch 'krita/5.1'. Fix nullptr crash: srcImage may not exist when deep-copying layers (cherry picked from commit 44c4f74a273b1f6c0b99f56a0f96342fd81b2c47) M +3 -2 libs/ui/kis_mimedata.cpp https://invent.kde.org/graphics/krita/commit/39a56110b50dc1246e76e891ac575ba8e9c613b5 *** Bug 458301 has been marked as a duplicate of this bug. *** *** Bug 458502 has been marked as a duplicate of this bug. *** *** Bug 458691 has been marked as a duplicate of this bug. *** *** Bug 458706 has been marked as a duplicate of this bug. *** Created attachment 151821 [details]
New crash information added by DrKonqi
krita (5.1.0) using Qt 5.15.5
Using default config :
I opened 2 files : a svg file and any kra file, go into svg tab and do Ctrl+C on the vector layer then go into other tab then finally do Ctrl+V. Krita crashes.
I joined backtrace with it.
-- Backtrace (Reduced):
#4 0x00007f2eb9cd4564 in KisImage::xRes() const () from /usr/lib/libkritaimage.so.18
#5 0x00007f2eba3e7126 in KisMimeData::initializeExternalNode(KisSharedPtr<KisNode>*, KisSharedPtr<KisImage>, KisSharedPtr<KisImage>, KisShapeController*) () from /usr/lib/libkritaui.so.18
#6 0x00007f2eba3e751d in KisMimeData::tryLoadInternalNodes(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, bool&) () from /usr/lib/libkritaui.so.18
#7 0x00007f2eba3ed7cb in KisMimeData::loadNodesFast(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, bool&) () from /usr/lib/libkritaui.so.18
#8 0x00007f2eba3ee30c in KisMimeData::insertMimeLayers(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, KisNodeDummy*, KisNodeDummy*, bool, KisNodeInsertionAdapter*, bool, QPointF) () from /usr/lib/libkritaui.so.18
I'm afraid I have to reopen this bug, pasting a vector layer still crashes 100% for me on master (4ec1dd783197f4eda48a3867666483920f210e68). Doesn't matter if same document, other document or even inkscape, Krita will crash. Application: Krita (krita), signal: Aborted [KCrash Handler] #4 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140021918066816) at ./nptl/pthread_kill.c:44 #5 __pthread_kill_internal (signo=6, threadid=140021918066816) at ./nptl/pthread_kill.c:78 #6 __GI___pthread_kill (threadid=140021918066816, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #7 0x00007f5969f1e476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #8 0x00007f5969f047f3 in __GI_abort () at ./stdlib/abort.c:79 #9 0x00007f596a3e2bff in () at /opt/qt515-kde/lib/libQt5Core.so.5 #10 0x00007f596a3e1ff0 in qt_assert_x(char const*, char const*, char const*, int) () at /opt/qt515-kde/lib/libQt5Core.so.5 #11 0x00007f596c35baa5 in KisImageViewConverter::KisImageViewConverter(KisWeakSharedPtr<KisImage>) (this=this@entry=0x562ae8735990, image=...) at (...)/libs/ui/kis_image_view_converter.cpp:15 #12 0x00007f596c59eba8 in KisShapeLayerCanvasBase::KisShapeLayerCanvasBase(KisShapeLayer*, KisWeakSharedPtr<KisImage>) (this=0x562ada403520, parent=0x562adcd21f70, image=...) at (...)/libs/ui/flake/kis_shape_layer_canvas.cpp:40 #13 0x00007f596c5a1b34 in KisShapeLayerCanvas::KisShapeLayerCanvas(KisShapeLayer*, KisWeakSharedPtr<KisImage>) (this=0x562ada403520, parent=0x562adcd21f70, image=...) at (...)/libs/ui/flake/kis_shape_layer_canvas.cpp:163 #14 0x00007f596c5946d2 in KisShapeLayer::initShapeLayerImpl(KoShapeControllerBase*, KisSharedPtr<KisPaintDevice>, KisShapeLayerCanvasBase*) (this=0x562adcd21f70, controller=0x562ad2cf2658, newProjectionDevice=..., overrideCanvas=<optimized out>) at (...)/libs/ui/flake/kis_shape_layer.cc:281 #15 0x00007f596c594c1e in KisShapeLayer::KisShapeLayer(KisShapeLayer const&, KoShapeControllerBase*, KisShapeLayerCanvasBase*) (this=0x562adcd21f70, _rhs=..., controller=0x562ad2cf2658, canvas=0x0) at (...)/libs/ui/flake/kis_shape_layer.cc:146 #16 0x00007f596c4785e7 in KisShapeLayer::clone() const (this=0x562adc5f5ad0) at (...)/libs/ui/flake/kis_shape_layer.h:72 #17 0x00007f596c64f1ba in (anonymous namespace)::safeCopyNode (detachClones=<optimized out>, node=...) at (...)/libs/ui/kis_mimedata.cpp:50 #18 KisMimeData::tryLoadInternalNodes(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, bool&) (data=<optimized out>, image=..., shapeController=0x562ad2cf2640, copyNode=@0x7ffe8b50d4cc: false) at (...)/libs/ui/kis_mimedata.cpp:281 #19 0x00007f596c6519cf in KisMimeData::loadNodesFast(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, bool&) (data=0x562ad4dab5a0, image=..., shapeController=<optimized out>, copyNode=@0x7ffe8b50d4cc: false) at (...)/libs/ui/kis_mimedata.cpp:412 #20 0x00007f596c653326 in KisMimeData::insertMimeLayers(QMimeData const*, KisSharedPtr<KisImage>, KisShapeController*, KisNodeDummy*, KisNodeDummy*, bool, KisNodeInsertionAdapter*, bool, QPointF) (data=data@entry=0x562ad4dab5a0, image=..., shapeController=shapeController@entry=0x562ad2cf2640, parentDummy=<optimized out>, parentDummy@entry=0x562ad521b300, aboveThisDummy=<optimized out>, aboveThisDummy@entry=0x0, copyNode=<optimized out>, copyNode@entry=false, nodeInsertionAdapter=0x562ad0c46c00, changeOffset=false, offset=...) at (...)/libs/ui/kis_mimedata.cpp:451 #21 0x00007f596c662a0c in KisNodeManager::pasteLayersFromClipboard(bool, QPointF) (this=<optimized out>, changeOffset=<optimized out>, offset=...) at (...)/libs/ui/kis_node_manager.cpp:1492 #22 0x00007f596a6443b8 in () at /opt/qt515-kde/lib/libQt5Core.so.5 #23 0x00007f596b146c76 in QAction::triggered(bool) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #24 0x00007f596b14998c in QAction::activate(QAction::ActionEvent) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #25 0x00007f596b2d58d2 in () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #26 0x00007f596b2dd4a9 in () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #27 0x00007f596b1908be in QWidget::event(QEvent*) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #28 0x00007f596b14d7a3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #29 0x00007f596b1553e4 in QApplication::notify(QObject*, QEvent*) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #30 0x00007f596c9cf775 in KisApplication::notify(QObject*, QEvent*) (this=0x7ffe8b50e690, receiver=0x562ae0979bf0, event=0x7ffe8b50ddd0) at (...)/libs/ui/KisApplication.cpp:757 #31 0x00007f596a60c78a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /opt/qt515-kde/lib/libQt5Core.so.5 #32 0x00007f596b153ec7 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #33 0x00007f596b1aac53 in () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #34 0x00007f596b1ad3e5 in () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #35 0x00007f596b14d7a3 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /opt/qt515-kde/lib/libQt5Widgets.so.5 #36 0x00007f596c9cf775 in KisApplication::notify(QObject*, QEvent*) (this=0x7ffe8b50e690, receiver=0x7f595c00d1b0, event=0x7ffe8b50e130) at (...)/libs/ui/KisApplication.cpp:757 #37 0x00007f596a60c78a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /opt/qt515-kde/lib/libQt5Core.so.5 #38 0x00007f596aa32ac7 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /opt/qt515-kde/lib/libQt5Gui.so.5 #39 0x00007f596aa06acc in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/lib/libQt5Gui.so.5 #40 0x00007f5964402fde in () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #41 0x00007f5967a65d1b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #42 0x00007f5967aba6f8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #43 0x00007f5967a633c3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #44 0x00007f596a665ca8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/lib/libQt5Core.so.5 #45 0x00007f596a60b0ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/lib/libQt5Core.so.5 #46 0x00007f596a613644 in QCoreApplication::exec() () at /opt/qt515-kde/lib/libQt5Core.so.5 #47 0x0000562acd7307c1 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at (...)/krita/main.cc:727 [Inferior 1 (process 23366) detached] (In reply to Lynx3d from comment #12) > I'm afraid I have to reopen this bug, pasting a vector layer still crashes > 100% for me on master (4ec1dd783197f4eda48a3867666483920f210e68). > Doesn't matter if same document, other document or even inkscape, Krita will > crash. Can you paste the backtrace you get when trying to paste from inkscape? I believe they should differ from this one. I can confirm this bug happens to me too. 5.1.0 sh_zam, it is shorter, but the part after KisShapeLayer::clone() looks identical at first sight: Application: Krita (krita), signal: Aborted [KCrash Handler] #4 __pthread_kill_implementation (no_tid=0, signo=6, threadid=140095856425088) at ./nptl/pthread_kill.c:44 #5 __pthread_kill_internal (signo=6, threadid=140095856425088) at ./nptl/pthread_kill.c:78 #6 __GI___pthread_kill (threadid=140095856425088, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #7 0x00007f6aa103b476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #8 0x00007f6aa10217f3 in __GI_abort () at ./stdlib/abort.c:79 #9 0x00007f6aa14ffbff in () at /opt/qt515-kde/lib/libQt5Core.so.5 #10 0x00007f6aa14feff0 in qt_assert_x(char const*, char const*, char const*, int) () at /opt/qt515-kde/lib/libQt5Core.so.5 #11 0x00007f6aa3478aa5 in KisImageViewConverter::KisImageViewConverter(KisWeakSharedPtr<KisImage>) (this=this@entry=0x563fa011df30, image=...) at (...)/libs/ui/kis_image_view_converter.cpp:15 #12 0x00007f6aa36bbba8 in KisShapeLayerCanvasBase::KisShapeLayerCanvasBase(KisShapeLayer*, KisWeakSharedPtr<KisImage>) (this=0x563fb9f54140, parent=0x563faddfad20, image=...) at (...)/libs/ui/flake/kis_shape_layer_canvas.cpp:40 #13 0x00007f6aa36beb34 in KisShapeLayerCanvas::KisShapeLayerCanvas(KisShapeLayer*, KisWeakSharedPtr<KisImage>) (this=0x563fb9f54140, parent=0x563faddfad20, image=...) at (...)/libs/ui/flake/kis_shape_layer_canvas.cpp:163 #14 0x00007f6aa36b16d2 in KisShapeLayer::initShapeLayerImpl(KoShapeControllerBase*, KisSharedPtr<KisPaintDevice>, KisShapeLayerCanvasBase*) (this=0x563faddfad20, controller=0x563fa43b71e8, newProjectionDevice=..., overrideCanvas=<optimized out>) at (...)/libs/ui/flake/kis_shape_layer.cc:281 #15 0x00007f6aa36b1c1e in KisShapeLayer::KisShapeLayer(KisShapeLayer const&, KoShapeControllerBase*, KisShapeLayerCanvasBase*) (this=0x563faddfad20, _rhs=..., controller=0x563fa43b71e8, canvas=0x0) at (...)/libs/ui/flake/kis_shape_layer.cc:146 #16 0x00007f6aa35955e7 in KisShapeLayer::clone() const (this=0x563fa4130cb0) at (...)/libs/ui/kritaui_autogen/QUY67KCZCL/../../../libs/ui/flake/kis_shape_layer.h:72 #17 0x00007f6aa3769e48 in (anonymous namespace)::safeCopyNode(KisNodeSP, bool) (node=..., detachClones=true) at (...)/libs/ui/kis_mimedata.cpp:50 #18 0x00007f6aa376f3f1 in createDocument(QList<KisSharedPtr<KisNode> >, KisSharedPtr<KisImage>) (nodes=..., srcImage=...) at (...)/libs/ui/kis_mimedata.cpp:125 #19 0x00007f6aa3770f0e in KisMimeData::retrieveData(QString const&, QVariant::Type) const (this=<optimized out>, mimetype=<optimized out>, preferredType=QVariant::Image) at (...)/libs/ui/kis_mimedata.cpp:171 #20 0x00007f6aa1750110 in () at /opt/qt515-kde/lib/libQt5Core.so.5 #21 0x00007f6aa1750fdd in QMimeData::imageData() const () at /opt/qt515-kde/lib/libQt5Core.so.5 #22 0x00007f6aa1b6e410 in QInternalMimeData::renderDataHelper(QString const&, QMimeData const*) () at /opt/qt515-kde/lib/libQt5Gui.so.5 #23 0x00007f6a9b500fd8 in () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #24 0x00007f6a9b4f4643 in () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #25 0x00007f6a9b4f4d62 in () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #26 0x00007f6a9b4f7cf1 in QXcbConnection::handleXcbEvent(xcb_generic_event_t*) () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #27 0x00007f6a9b4f91a6 in QXcbConnection::processXcbEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #28 0x00007f6a9b51ffd7 in () at /opt/qt515-kde/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #29 0x00007f6a9eb82d1b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #30 0x00007f6a9ebd76f8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #31 0x00007f6a9eb803c3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #32 0x00007f6aa1782ca8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/lib/libQt5Core.so.5 #33 0x00007f6aa17280ab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt515-kde/lib/libQt5Core.so.5 #34 0x00007f6aa1730644 in QCoreApplication::exec() () at /opt/qt515-kde/lib/libQt5Core.so.5 #35 0x0000563f9ec897c1 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at (...)/krita/main.cc:727 [Inferior 1 (process 4261) detached] Git commit 8a1e5920e696163dc128669cbb645401941f6dc9 by Dmitry Kazakov. Committed on 16/09/2022 at 14:56. Pushed by dkazakov into branch 'master'. Fix an assert when copy/paste a filter layer M +12 -7 libs/image/kis_selection_based_layer.cpp https://invent.kde.org/graphics/krita/commit/8a1e5920e696163dc128669cbb645401941f6dc9 Git commit 31ed09f8a54f34b7f8c496c537dfbbb224c26dd1 by Dmitry Kazakov. Committed on 16/09/2022 at 14:56. Pushed by dkazakov into branch 'master'. Fix a crash when copy/paste a shape layer M +3 -1 libs/ui/flake/kis_shape_layer_canvas.cpp https://invent.kde.org/graphics/krita/commit/31ed09f8a54f34b7f8c496c537dfbbb224c26dd1 Git commit ed757644f27d4f1507b5e8c294b48529545a85cf by Dmitry Kazakov. Committed on 16/09/2022 at 14:57. Pushed by dkazakov into branch 'krita/5.1'. Fix an assert when copy/paste a filter layer (cherry picked from commit 8a1e5920e696163dc128669cbb645401941f6dc9) M +12 -7 libs/image/kis_selection_based_layer.cpp https://invent.kde.org/graphics/krita/commit/ed757644f27d4f1507b5e8c294b48529545a85cf Git commit 4126e6dde47dc39cbfd60f359d08988052cd8c97 by Dmitry Kazakov. Committed on 16/09/2022 at 14:57. Pushed by dkazakov into branch 'krita/5.1'. Fix a crash when copy/paste a shape layer (cherry picked from commit 31ed09f8a54f34b7f8c496c537dfbbb224c26dd1) M +3 -1 libs/ui/flake/kis_shape_layer_canvas.cpp https://invent.kde.org/graphics/krita/commit/4126e6dde47dc39cbfd60f359d08988052cd8c97 I confirm this problem doesn't happen in 5.1.1. *** Bug 469850 has been marked as a duplicate of this bug. *** |