Bug 435670 - Adding two shapes from vector library results in an assert
Summary: Adding two shapes from vector library results in an assert
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Layers/Vector (show other bugs)
Version: nightly build (please specify the git hash!)
Platform: Mint (Ubuntu based) Linux
: NOR crash
Target Milestone: ---
Assignee: sh_zam
URL:
Keywords:
: 422850 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-04-12 18:00 UTC by Tiar
Modified: 2021-05-12 12:05 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Crash log for all threads (12.16 KB, text/plain)
2021-04-12 18:00 UTC, Tiar
Details
Backtrace for all threads (25.88 KB, text/plain)
2021-04-12 18:15 UTC, Tiar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2021-04-12 18:00:30 UTC
Created attachment 137540 [details]
Crash log for all threads

SUMMARY
If you add a shape from vector library, and then, without deselecting that shape, you add another one, you'll get a safe assert window, and then a crash/freeze/another assert.

STEPS TO REPRODUCE
1. Build Krita with safe assert dialogs on.
2. Drag a shape from a vector library to the canvas (remember that Pepper & carrot shapes are white and will be invisible on white canvas). Do not unselect the shape.
3. Optional: switch to another vector library.
4. Drag another shape on the canvas.

OBSERVED RESULT
In case of "optional", I get a weird situation when I don't have my X11 hang up, but the safe assert window doesn't react to either Abort or Ignore.
If I break it in gdb, I get the crash log as shown below.

In case without the optional step, my whole X11 hangs up so I cannot tell what the backtrace is.

EXPECTED RESULT
No safe asserts. No crashes. No freezes.

NOTE
On Krita 4.4.3 you already get those safe asserts:
SAFE ASSERT (krita): "srcShape->parent() == excludeRoot" in file /home/appimage/workspace/Krita_Release_Appimage_Build/krita/libs/flake/KoShapeManager.cpp, line 512
SAFE ASSERT (krita): "clonedShapes.size() == originalShapes.size()" in file /home/appimage/workspace/Krita_Release_Appimage_Build/krita/libs/flake/KoShapeManager.cpp, line 534


SOFTWARE/OS VERSIONS
Krita: 5766bca3cc (built)
Qt

  Version (compiled): 5.12.9
  Version (loaded): 5.12.9

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 5.4.0-67-generic
  Pretty Productname: Linux Mint 20.1
  Product Type: linuxmint
  Product Version: 20.1
  Desktop: X-Cinnamon

ADDITIONAL INFORMATION
Crash log after doing ctrl+C in gdb with the "optional" step:

Thread 1 "krita" received signal SIGINT, Interrupt.
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38	../sysdeps/unix/sysv/linux/x86_64/syscall.S: Nie ma takiego pliku ani katalogu.
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff442ac75 in QBasicMutex::lockInternal() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff359175e in QMutexLocker::QMutexLocker(QBasicMutex*) (this=<error reading variable: Unhandled dwarf expression opcode 0x0>, m=<optimized out>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:206
#3  0x000055555c01d960 in  ()
#4  0x00007ffff3590031 in KoShapeManager::remove(KoShape*) (this=<error reading variable: Asked for position 0 of stack, stack only has 0 elements on it.>, shape=<optimized out>)
    at /home/tymon/kritadev/krita/libs/flake/KoShapeManager.cpp:418
#5  0x0000000000000008 in  ()
#6  0xcf0d8c3d3e964500 in  ()
#7  0x000055555bb1a100 in  ()
#8  0xcf0d8c3d3e964500 in  ()
#9  0x000055556164f160 in  ()
#10 0x00005555592b8660 in  ()
#11 0x0000555560577068 in  ()
#12 0x00007ffff6b73b6a in KisSharedPtr<KisNode>::deref(KisSharedPtr<KisNode> const*, KisNode*) (sp=<optimized out>, t=<optimized out>) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:191
#13 KisSharedPtr<KisNode>::deref() const (this=<error reading variable: Unhandled dwarf expression opcode 0x0>) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:213
#14 KisSharedPtr<KisNode>::~KisSharedPtr() (this=<optimized out>, __in_chrg=<optimized out>) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:97
#15 KisCanvas2::localShapeManager() const (this=<optimized out>) at /home/tymon/kritadev/krita/libs/ui/canvas/kis_canvas2.cpp:432
#16 0x0000000000000000 in  ()
Comment 1 Tiar 2021-04-12 18:15:00 UTC
Created attachment 137541 [details]
Backtrace for all threads

Trying it again, I got this backtrace:

Thread 1 "krita" received signal SIGINT, Interrupt.
syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
38	../sysdeps/unix/sysv/linux/x86_64/syscall.S: Nie ma takiego pliku ani katalogu.
(gdb) bt
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff47c5c75 in QBasicMutex::lockInternal() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff3994944 in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x55555b99ff78, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:206
#3  KoShapeManager::remove(KoShape*) (this=0x5555612148c0, shape=<optimized out>) at /home/tymon/kritadev/krita/libs/flake/KoShapeManager.cpp:418
#4  0x00007ffff39a5a01 in Viewport::handleDropEvent(QDropEvent*) (this=0x55555a445c10, event=0x7fffffff97a0) at /home/tymon/kritadev/krita/libs/flake/KoCanvasControllerWidgetViewport_p.cpp:202
#5  0x00007ffff53e82b6 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff5495d52 in QFrame::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff498d64b in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff53a5a55 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff53af7aa in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555b50f5f0, event=0x7fffffff97a0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#11 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff5406692 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff540742a in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff53a5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#15 0x00007ffff53af0f0 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555cadd8e0, event=0x7fffffff9bb0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#17 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff4d785b2 in QGuiApplicationPrivate::processDrop(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#19 0x00007ffff4d51bd0 in QWindowSystemInterface::handleDrop(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#20 0x00007fffeed95119 in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#21 0x00007fffeed98536 in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#22 0x00007ffff4db023c in QBasicDrag::eventFilter(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#23 0x00007ffff498d51b in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff53a5aa0 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff53af0f0 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555561f02420, event=0x7fffffffa370) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#27 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#28 0x00007ffff4d767d3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#29 0x00007ffff4d7810b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#30 0x00007ffff4d5235b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#31 0x00007fffeed8e32e in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#32 0x00007ffff1e5817d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007ffff1e58400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007ffff1e584a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007ffff49e5565 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#36 0x00007ffff498c4db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff55a9c6d in QDialog::exec() () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff55e2456 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff594989c in kis_assert_common(char const*, char const*, int, bool, bool) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>, throwException=<optimized out>, isIgnorable=<optimized out>)
    at /usr/include/x86_64-linux-gnu/qt5/QtCore/qcoreapplication.h:116
#40 0x00007ffff399389c in KoShapeManager::preparePaintJobs(KoShapeManager::PaintJobsOrder&, KoShape*) (this=0x5555612148c0, jobsOrder=..., excludeRoot=0x555561f67298) at /home/tymon/kritadev/krita/libs/flake/KoShapeManager.cpp:501
#41 0x00007ffff6db7533 in KisShapeLayerCanvas::slotStartAsyncRepaint() (this=0x555561156460) at /home/tymon/kritadev/krita/libs/ui/flake/kis_shape_layer_canvas.cpp:296
#42 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#43 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#44 0x00007ffff596a0ad in KisSignalCompressor::tryEmitSignalSafely() (this=this@entry=0x555561664750) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:195
#45 0x00007ffff596a165 in KisSignalCompressor::tryEmitOnTick(bool) (this=this@entry=0x555561664750, isFromTimer=isFromTimer@entry=false) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:172
#46 0x00007ffff596a233 in KisSignalCompressor::start() (this=0x555561664750) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:138
#47 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#48 0x00007ffff6db6679 in KisShapeLayerCanvas::updateCanvas(QVector<QRectF> const&) (this=0x555561156460, region=...) at /home/tymon/kritadev/krita/libs/ui/flake/kis_shape_layer_canvas.cpp:207
#49 0x00007ffff6db67b5 in KisShapeLayerCanvas::updateCanvas(QRectF const&) (this=0x555561156460, rc=...) at /usr/include/c++/9/initializer_list:71
#50 0x00007ffff398f92c in KoShapeManager::Private::forwardCompressedUdpate() (this=0x55555b99ff20) at /home/tymon/kritadev/krita/libs/flake/KoShapeManager.cpp:309
#51 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#52 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#53 0x00007ffff596a0ad in KisSignalCompressor::tryEmitSignalSafely() (this=this@entry=0x5555617abe00) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:195
--Type <RET> for more, q to quit, c to continue without paging--
#54 0x00007ffff596a165 in KisSignalCompressor::tryEmitOnTick(bool) (this=this@entry=0x5555617abe00, isFromTimer=isFromTimer@entry=false) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:172
#55 0x00007ffff596a233 in KisSignalCompressor::start() (this=0x5555617abe00) at /home/tymon/kritadev/krita/libs/global/kis_signal_compressor.cpp:138
#56 0x00007ffff49b9300 in QMetaObject::activate(QObject*, int, int, void**) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#57 0x00007ffff3990783 in KoShapeManager::update(QRectF const&, KoShape const*, bool) (this=0x5555612148c0, rect=..., shape=<optimized out>, shape@entry=0x555561e81a60, selectionHandles=selectionHandles@entry=true)
    at /home/tymon/kritadev/krita/libs/flake/KoShapeManager.cpp:706
#58 0x00007ffff3981007 in KoShape::update() const (this=this@entry=0x555561e81a60) at /home/tymon/kritadev/krita/libs/flake/KoShape.cpp:588
#59 0x00007ffff398d402 in KoShapeContainer::update() const (this=0x555561e81a60) at /home/tymon/kritadev/krita/libs/flake/KoShapeContainer.cpp:129
#60 0x00007ffff39a5396 in Viewport::handleDragMoveEvent(QDragMoveEvent*) (this=0x55555a445c10, event=0x7fffffffba00) at /home/tymon/kritadev/krita/libs/flake/KoCanvasControllerWidgetViewport_p.cpp:247
#61 0x00007ffff53e82b6 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#62 0x00007ffff5495d52 in QFrame::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#63 0x00007ffff498d64b in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#64 0x00007ffff53a5a55 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#65 0x00007ffff53af7aa in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#66 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555b50f5f0, event=0x7fffffffba00) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#67 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#68 0x00007ffff540627d in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#69 0x00007ffff5407415 in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#70 0x00007ffff53a5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#71 0x00007ffff53af0f0 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#72 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555cadd8e0, event=0x7fffffffbe00) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#73 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#74 0x00007ffff4d78421 in QGuiApplicationPrivate::processDrag(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#75 0x00007ffff4d51a81 in QWindowSystemInterface::handleDrag(QWindow*, QMimeData const*, QPoint const&, QFlags<Qt::DropAction>, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#76 0x00007fffeed943e0 in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#77 0x00007fffeed97171 in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#78 0x00007ffff4db002a in QBasicDrag::eventFilter(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#79 0x00007ffff498d51b in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#80 0x00007ffff53a5aa0 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#81 0x00007ffff53af0f0 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#82 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x555561f02420, event=0x7fffffffc690) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#83 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#84 0x00007ffff4d767d3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#85 0x00007ffff4d7810b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#86 0x00007ffff4d5235b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#87 0x00007fffeed8e32e in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#88 0x00007ffff1e5817d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#89 0x00007ffff1e58400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#90 0x00007ffff1e584a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#91 0x00007ffff49e5565 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#92 0x00007ffff498c4db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#93 0x00007ffff4daf8e7 in QBasicDrag::drag(QDrag*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#94 0x00007ffff4dad049 in QDragManager::drag(QDrag*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#95 0x00007ffff4dad32a in QDrag::exec(QFlags<Qt::DropAction>, Qt::DropAction) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#96 0x00007ffff561b2b8 in QAbstractItemView::startDrag(QFlags<Qt::DropAction>) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#97 0x00007ffff5619c3b in QAbstractItemView::mouseMoveEvent(QMouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#98 0x00007ffff5655fbf in QListView::mouseMoveEvent(QMouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#99 0x00007ffff53e82b6 in QWidget::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#100 0x00007ffff5495d52 in QFrame::event(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#101 0x00007ffff561a482 in QAbstractItemView::viewportEvent(QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#102 0x00007ffff498d64b in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#103 0x00007ffff53a5a55 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#104 0x00007ffff53af343 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#105 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555c4d2ed0, event=0x7fffffffd3d0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#106 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#107 0x00007ffff53ae457 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#108 0x00007ffff540435d in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#109 0x00007ffff54071ec in  () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#110 0x00007ffff53a5a66 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#111 0x00007ffff53af0f0 in QApplication::notify(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#112 0x00007ffff70ba58d in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555cadd8e0, event=0x7fffffffd8d0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:709
#113 0x00007ffff498d93a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#114 0x00007ffff4d767d3 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#115 0x00007ffff4d7810b in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#116 0x00007ffff4d5235b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Gui.so.5
#117 0x00007fffeed8e32e in  () at /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#118 0x00007ffff1e5817d in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#119 0x00007ffff1e58400 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#120 0x00007ffff1e584a3 in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#121 0x00007ffff49e5565 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#122 0x00007ffff498c4db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#123 0x00007ffff4994246 in QCoreApplication::exec() () at /lib/x86_64-linux-gnu/libQt5Core.so.5
#124 0x0000555555e2a51e in main(int, char**) (argc=<optimized out>, argv=0x7fffffffdf98) at /home/tymon/kritadev/krita/krita/main.cc:663
Comment 2 Ahab Greybeard 2021-04-13 13:50:38 UTC
With the Apr 12 5.0.0-prealpha (git 9b24e9c) appimage on Debian 10, I see Safe Asserts even if I deselect the first vector library item before dragging the second shape out.

I get Safe Asserts in the 4.4.3 appimage as well

This:
13 Apr 2021 14:37:02 +0100: SAFE ASSERT (krita): "srcShape->parent() == excludeRoot" in file /home/appimage/workspace/Krita_Nightly_Appimage_Build/krita/libs/flake/KoShapeManager.cpp, line 501
13 Apr 2021 14:37:02 +0100: SAFE ASSERT (krita): "clonedShapes.size() == originalShapes.size()" in file /home/appimage/workspace/Krita_Nightly_Appimage_Build/krita/libs/flake/KoShapeManager.cpp, line 523

Repated for an additional five times.

The number of repeats is varible for each new file, even dragging out the same vector library items in the same order.
Leaving the first item selected does not affect the Safe Asserts and does not cause a crash or perceptible freeze.

SOFTWARE/OS VERSIONS
Krita

 Version: 5.0.0-prealpha (git 9b24e9c)
 Languages: en_GB, en, en, en_GB, en
 Hidpi: false

Qt

  Version (compiled): 5.12.9
  Version (loaded): 5.12.9

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 4.19.0-16-amd64
  Pretty Productname: Debian GNU/Linux 10 (buster)
  Product Type: debian
  Product Version: 10
  Desktop: MATE
Comment 3 vanyossi 2021-04-16 02:38:10 UTC
Line was introduced in 09519feaf10804d7242a44e36b472aa13e809055 and seems harmless, it could even be a if case.

I never get a crash nor a freeze, Safe asserts are triggered even if onyl one shape is in the vector layer prior to be D&D, they keep printing over and over againas long as I don't drop the vector shape (that is why they vary) and move the cursor with the D&D action still active.


The second line comes from 2617900662ff7046d79249077053ed which could potentially be the backtrace you are seeing.

however I never get a crash/freeze so the issue could be or could not be related to those commits.
Comment 4 sh_zam 2021-04-22 12:18:31 UTC
I don't get a crash, but do get an assert. An additional effect of the bug seems that the previous shapes which are not selected disappear if the shape is dragged over them. 

Assigning this to myself. @vanyossi if you're working on this already, let me know.
Comment 5 sh_zam 2021-04-22 21:30:25 UTC
Git commit e164c69a51e18dc89d2645d81154464fe07c0883 by Sharaf Zaman.
Committed on 22/04/2021 at 21:28.
Pushed by szaman into branch 'master'.

Bugfix: assert when a shape from vector library...

... is dragged onto vector layer.

Shapes while being dragged, may not have a parent (vector layer)
associated with them. This results in srcShape->parent() being null.

M  +4    -1    libs/flake/KoShapeManager.cpp

https://invent.kde.org/graphics/krita/commit/e164c69a51e18dc89d2645d81154464fe07c0883
Comment 6 sh_zam 2021-05-12 12:05:52 UTC
*** Bug 422850 has been marked as a duplicate of this bug. ***