https://bugs.kde.org/show_bug.cgi?id=431199
Bug ID: 431199 Summary: Crash on Smart Patch tool on master (Krita 5.0) Product: krita Version: git master Platform: Mint (Ubuntu based) OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: Tool/Smart Patch Assignee: krita-bugs-n...@kde.org Reporter: tamtamy.tym...@gmail.com Target Milestone: --- Created attachment 134596 --> https://bugs.kde.org/attachment.cgi?id=134596&action=edit 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 -- You are receiving this mail because: You are watching all bug changes.