Bug 431199 - Crash on Smart Patch tool on master (Krita 5.0)
Summary: Crash on Smart Patch tool on master (Krita 5.0)
Status: RESOLVED DUPLICATE of bug 430953
Alias: None
Product: krita
Classification: Applications
Component: Tool/Smart Patch (show other bugs)
Version: git master (please specify the git hash!)
Platform: Mint (Ubuntu based) Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-05 23:17 UTC by Tiar
Modified: 2021-01-05 23:20 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
Test file (1.40 MB, application/zip)
2021-01-05 23:17 UTC, Tiar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tiar 2021-01-05 23:17:13 UTC
Created attachment 134596 [details]
Test file

SUMMARY
Using Smart Patch Tool doesn't work on Krita 5.0; sometimes (on a opaque layer when there is only one layer in the file) it erases instead of patching up, and sometimes it crashes.

STEPS TO REPRODUCE
1. Open the test file in Krita.
2. Use the Smart Patch tool (it's possible you need either a big size or a longer stroke to get the crash; but it happens fairly often, it shouldn't be difficult to reproduce)

OBSERVED RESULT
Crash :(

EXPECTED RESULT
No crash! :)

CRASH LOG
Thread 40 "Thread (pooled)" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffb0eed700 (LWP 2466)]
0x00007fffcc1cdb07 in NearestNeighborField::ExpectationStep(KisSharedPtr<NearestNeighborField>, KisSharedPtr<MaskedImage>, KisSharedPtr<MaskedImage>, bool) () at /usr/include/c++/8/bits/stl_vector.h:930
930	      operator[](size_type __n) _GLIBCXX_NOEXCEPT
(gdb) bt
#0  0x00007fffcc1cdb07 in NearestNeighborField::ExpectationStep(KisSharedPtr<NearestNeighborField>, KisSharedPtr<MaskedImage>, KisSharedPtr<MaskedImage>, bool) (nnf=..., source=..., target=..., upscale=false)
    at /usr/include/c++/8/bits/stl_vector.h:930
#1  0x00007fffcc1cee58 in NearestNeighborField::ExpectationMaximization(KisSharedPtr<NearestNeighborField>, int, int, QList<KisSharedPtr<MaskedImage> >&) (nnf_TargetToSource=..., level=3, radius=4, pyramid=...)
    at /usr/include/c++/8/bits/atomic_base.h:295
#2  0x00007fffcc1cfb0a in Inpaint::patch() (this=0x7fffb0eecaa0) at /usr/include/c++/8/bits/atomic_base.h:295
#3  0x00007fffcc1d0595 in patchImage(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, int, int, KisSharedPtr<KisSelection>) (imageDev=..., maskDev=..., patchRadius=4, accuracy=<optimized out>, selection=...)
    at /home/tymon/kritadev/krita/plugins/tools/tool_smart_patch/kis_inpaint.cpp:985
#4  0x00007fffcc1ca918 in KisToolSmartPatch::InpaintCommand::paint() (this=0x55555b6cc4d0) at /usr/include/c++/8/bits/atomic_base.h:295
#5  0x00007ffff5ae5ea5 in KisTransactionBasedCommand::redo() (this=0x55555b6cc4d0) at /home/tymon/kritadev/krita/libs/image/commands_new/kis_transaction_based_command.cpp:22
#6  0x00007ffff5bf6afa in KisStrokeStrategyUndoCommandBased::doStrokeCallback(KisStrokeJobData*) (this=0x55555e096130, data=0x55555b6cc530) at /usr/include/c++/8/bits/atomic_base.h:295
#7  0x00007ffff5e52051 in non-virtual thunk to KisUpdateJobItem::run() () at /home/tymon/kritadev/install/lib/x86_64-linux-gnu/libkritaimage.so.17
#8  0x00007ffff45ebf71 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff45f3c87 in  () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffff19a8182 in start_thread (arg=<optimized out>) at pthread_create.c:486
#11 0x00007ffff3ec2b1f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95


(gdb) thread apply all bt
### Here the only other thread that has some info:
Thread 1 (Thread 0x7fffeb13dc80 (LWP 2083)):
---Type <return> to continue, or q <return> to quit---
#0  0x00007ffff45e6dfc in QMutex::lock() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#1  0x00007ffff5bfbab7 in QMutexLocker::QMutexLocker(QBasicMutex*) (m=0x555563955e40, this=<synthetic pointer>) at /usr/include/x86_64-linux-gnu/qt5/QtCore/qmutex.h:206
#2  0x00007ffff5bfbab7 in KisStrokesQueue::isEmpty() const (this=0x555559cecd90) at /home/tymon/kritadev/krita/libs/image/kis_strokes_queue.cpp:550
#3  0x00007ffff5c0809d in KisUpdateScheduler::tryBarrierLock() (this=0x5555609047e0) at /home/tymon/kritadev/krita/libs/image/kis_update_scheduler.cpp:351
#4  0x00007ffff5c080fd in KisUpdateScheduler::isIdle() (this=0x5555609047e0) at /home/tymon/kritadev/krita/libs/image/kis_update_scheduler.cpp:324
#5  0x00007ffff5c26323 in KisImage::isIdle(bool) (this=<optimized out>, allowLocked=<optimized out>) at /home/tymon/kritadev/krita/libs/image/kis_image.cc:726
#6  0x00007ffff6c5c92b in KisDelayedSaveDialog::Private::checkImageIdle() (this=<optimized out>) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:167
#7  0x00007ffff6c5c92b in KisDelayedSaveDialog::blockIfImageIsBusy() (this=0x7fffffffc380) at /home/tymon/kritadev/krita/libs/ui/dialogs/kis_delayed_save_dialog.cpp:87
#8  0x00007ffff7056314 in (anonymous namespace)::busyWaitWithFeedback(KisSharedPtr<KisImage>) (image=...) at /home/tymon/kritadev/krita/libs/ui/KisPart.cpp:123
#9  0x00007ffff7057292 in std::_Function_handler<void (KisSharedPtr<KisImage>), void (*)(KisSharedPtr<KisImage>)>::_M_invoke(std::_Any_data const&, KisSharedPtr<KisImage>&&) (__functor=..., __args#0=...)
    at /usr/include/c++/8/bits/atomic_base.h:295
#10 0x00007ffff5b77178 in std::function<void (KisSharedPtr<KisImage>)>::operator()(KisSharedPtr<KisImage>) const (__args#0=..., this=<optimized out>) at /usr/include/c++/8/bits/std_function.h:682
#11 0x00007ffff5b77178 in KisBusyWaitBroker::notifyWaitOnImageStarted(KisImage*) (this=0x7ffff5f9c098 <_ZZN12_GLOBAL__N_116Q_QGS_s_instance13innerFunctionEvE6holder>, image=<optimized out>)
    at /home/tymon/kritadev/krita/libs/image/KisBusyWaitBroker.cpp:57
#12 0x00007ffff5c26c59 in KisImage::waitForDone() (this=0x555563992e40) at /home/tymon/kritadev/krita/libs/image/kis_image.cc:1741
#13 0x00007fffcc1c82a2 in KisToolSmartPatch::endPrimaryAction(KoPointerEvent*) (this=0x55555f1c7e80, event=<optimized out>) at /home/tymon/kritadev/krita/libs/global/kis_shared_ptr.h:419
#14 0x00007ffff6bb9378 in KisToolProxy::forwardToTool(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QPointF const&) (this=0x5555652a52d0, state=KisToolProxy::END, action=KisTool::Primary, event=0x7fffffffd4b0, docPoint=...)
    at /home/tymon/kritadev/krita/libs/ui/canvas/kis_tool_proxy.cpp:191
#15 0x00007ffff6bb950b in KisToolProxy::forwardEvent(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QEvent*) (this=0x5555652a52d0, state=KisToolProxy::END, action=KisTool::Primary, event=<optimized out>, originalEvent=0x7fffffffd4b0) at /home/tymon/kritadev/krita/libs/ui/canvas/kis_tool_proxy.cpp:121
#16 0x00007ffff6f8d828 in KisToolInvocationAction::end(QEvent*) (this=0x555559b999c0, event=0x7fffffffd4b0) at /usr/include/c++/8/bits/atomic_base.h:390
#17 0x00007ffff6f9c466 in KisShortcutMatcher::tryEndRunningShortcut(Qt::MouseButton, QEvent*) (this=this@entry=0x555558a91390, button=<optimized out>, event=event@entry=0x7fffffffd4b0)
    at /home/tymon/kritadev/krita/libs/ui/input/kis_shortcut_matcher.cpp:697
#18 0x00007ffff6f9ce8c in KisShortcutMatcher::buttonReleased(Qt::MouseButton, QEvent*) (this=0x555558a91390, button=<optimized out>, event=0x7fffffffd4b0) at /home/tymon/kritadev/krita/libs/ui/input/kis_shortcut_matcher.cpp:288
#19 0x00007ffff6f7ccf6 in KisInputManager::eventFilterImpl(QEvent*) [clone .localalias.272] (this=0x555559ba56e0, event=0x7fffffffd4b0) at /usr/include/x86_64-linux-gnu/qt5/QtGui/qevent.h:132
#20 0x00007ffff479c1ab in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffff515b491 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff5162d28 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff7003877 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x5555639f9310, event=0x7fffffffd4b0) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:688
#24 0x00007ffff479c499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#25 0x00007ffff5162029 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff51b4304 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff51b6e8e in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff515b4a1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff5162ae0 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff7003877 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x55555a879050, event=0x7fffffffd930) at /home/tymon/kritadev/krita/libs/ui/KisApplication.cpp:688
#31 0x00007ffff479c499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#32 0x00007ffff4ba153b in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#33 0x00007ffff4ba3435 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#34 0x00007ffff4b7db6b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#35 0x00007fffea84be5b in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#36 0x00007ffff479b16b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff47a32e2 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x0000555555e27efb in main (argc=<optimized out>, argv=0x7fffffffdee8) at /home/tymon/kritadev/krita/krita/main.cc:656
#39 0x00007ffff3dcbb6b in __libc_start_main (main=0x555555e26570 <main>, argc=1, argv=0x7fffffffdee8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffded8) at ../csu/libc-start.c:308
#40 0x0000555555e28f8a in _start () at /home/tymon/kritadev/krita/krita/main.cc:461


SOFTWARE/OS VERSIONS
Krita

 Version: 5.0.0-prealpha (git a1582db)
 Languages: en_US, en, en_US, en, en_US, en, pl_PL, pl, pl_PL, pl
 Hidpi: true

Qt

  Version (compiled): 5.11.1
  Version (loaded): 5.11.1

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 5.3.7-050307-generic
  Pretty Productname: Linux Mint 19.3
  Product Type: linuxmint
  Product Version: 19.3
  Desktop: X-Cinnamon
Comment 1 Tiar 2021-01-05 23:20:43 UTC
Forgot to check for duplicate, sorry :(

*** This bug has been marked as a duplicate of bug 430953 ***