https://bugs.kde.org/show_bug.cgi?id=520602
Freya Lupen <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] Ever confirmed|0 |1 Status|REPORTED |CONFIRMED Keywords| |qt6 --- Comment #1 from Freya Lupen <[email protected]> --- Confirmed, happens on 6.0.0 and my 6.1.x-803fe0449-Qt6.11 build but not 5.3.2.1 or my 5.4.x-803fe0449-updated-deps build. Trying to close Krita pops up the 'Waiting for image operation to complete' dialog; closing that with the X in the corner causes Krita to crash somewhere in ~KisMainWindow(). Backtrace of another thread shows the transform job running: > Thread 11:: Thread (pooled) > 0 QtGui 0x10a1a7368 > QPainterPath::contains(QPointF const&) const + 1256 > 1 QtGui 0x10a1a77d0 > QPainterPath::intersects(QRectF const&) const + 448 > 2 libkritaimage.21.0.0.dylib 0x108a2d918 > KritaUtils::splitPath(QPainterPath const&) + 276 (krita_utils.cpp:173) > 3 libkritaimage.21.0.0.dylib 0x108a0a6e4 > KisPerspectiveTransformWorker::fillParams(QRectF const&, QRect const&, > KisRegion*, QPolygonF*) + 364 (kis_perspectivetransform_worker.cpp:76) > 4 libkritaimage.21.0.0.dylib 0x108a0a3b8 > KisPerspectiveTransformWorker::init(QTransform const&) + 312 > (kis_perspectivetransform_worker.cpp:93) > 5 libkritaimage.21.0.0.dylib 0x108a0a538 > KisPerspectiveTransformWorker::KisPerspectiveTransformWorker(KisSharedPtr<KisPaintDevice>, > QTransform const&, bool, QPointer<KoUpdater>) + 184 > (kis_perspectivetransform_worker.cpp:55) > 6 kritatooltransform.so 0x14ca90cb4 (anonymous > namespace)::transformDeviceImpl(ToolTransformArgs const&, > KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, > KisProcessingVisitor::ProgressHelper*, bool, bool) + 1004 > (kis_transform_utils.cpp:359) > 7 kritatooltransform.so 0x14ca9083c > KisTransformUtils::transformDevice(ToolTransformArgs const&, > KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, > KisProcessingVisitor::ProgressHelper*) + 84 (kis_transform_utils.cpp:376) > 8 kritatooltransform.so 0x14ca925e8 > KisTransformUtils::transformAndMergeDevice(ToolTransformArgs const&, > KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, > KisProcessingVisitor::ProgressHelper*) + 312 (kis_transform_utils.cpp:586) > 9 kritatooltransform.so 0x14caaf850 > InplaceTransformStrokeStrategy::transformNode(KisSharedPtr<KisNode>, > ToolTransformArgs const&, int) + 776 > (inplace_transform_stroke_strategy.cpp:830) > 10 kritatooltransform.so 0x14cab8a10 > InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1::operator()() const + 40 > (inplace_transform_stroke_strategy.cpp:978) [inlined] > 11 kritatooltransform.so 0x14cab8a10 > decltype(std::declval<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1&>()()) > std::__1::__invoke[abi:ne190102]<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, > bool)::$_1&>(InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1&) + 40 (invoke.h:149) [inlined] > 12 kritatooltransform.so 0x14cab8a10 void > std::__1::__invoke_void_return_wrapper<void, > true>::__call[abi:ne190102]<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, > bool)::$_1&>(InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1&) + 40 (invoke.h:224) [inlined] > 13 kritatooltransform.so 0x14cab8a10 > std::__1::__function::__alloc_func<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1, > std::__1::allocator<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1>, void > ()>::operator()[abi:ne190102]() + 40 (function.h:171) [inlined] > 14 kritatooltransform.so 0x14cab8a10 > std::__1::__function::__func<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1, > std::__1::allocator<InplaceTransformStrokeStrategy::reapplyTransform(ToolTransformArgs, > QList<KisStrokeJobData*>&, int, bool)::$_1>, void ()>::operator()() + 64 > (function.h:313) > 15 libkritaimage.21.0.0.dylib 0x1086b78cc > KisUpdateJobItem::runImpl() + 360 (kis_update_job_item.h:100) [inlined] > 16 libkritaimage.21.0.0.dylib 0x1086b78cc > KisUpdateJobItem::run() + 392 (kis_update_job_item.h:49) > 17 QtCore 0x10c548210 > QThreadPoolThread::run() + 252 > 18 QtCore 0x10c5f6524 > QThreadPrivate::start(void*) + 392 > 19 libsystem_pthread.dylib 0x18af17bc8 _pthread_start + 136 > 20 libsystem_pthread.dylib 0x18af12b80 thread_start + 8 Investigation shows that it is getting stuck in KritaUtils::splitPath() because the QPainterPath passed by KisPerspectiveTransformWorker::fillParams() has become huge, after the m_dev->exactBounds() it's derived from has somehow gone far off-canvas: > KisPerspectiveTransformWorker::init transform QTransform(type=TxProject, > 11=2.00622 12=4.09944 13=0.00931691 21=-0.51276 22=-1.04106 23=-0.00474779 > 31=8.48005 32=10.9923 33=1.0667) m_srcRect QRectF(106,212 111x226) > m_dev->exactBounds QRect(107,213 109x224) > KisPerspectiveTransformWorker::fillParams splitPath( QPainterPath: Element > count=6 > -> MoveTo(x=107.309, y=214.579) > -> LineTo(x=160.968, y=326.554) > -> LineTo(x=217.299, y=440.647) > -> LineTo(x=-1017.1, y=-3300) > -> LineTo(x=-1052.47, y=-3300) > -> LineTo(x=107.309, y=214.579) > > KisPerspectiveTransformWorker::fillParams )splitPath > KisPerspectiveTransformWorker::init transform QTransform(type=TxProject, > 11=990434 12=1.97694e+06 13=-0.00917431 21=488754 22=989202 23=-8.19564e-08 > 31=-4.48804e+12 32=-9.04135e+12 33=13980.3) m_srcRect > QRectF(1.52368e+06,6.09472e+06 111x226) m_dev->exactBounds > QRect(1523685,6094717 109x224) > KisPerspectiveTransformWorker::fillParams splitPath( QPainterPath: Element > count=6 > -> MoveTo(x=-4.57139e+06, y=-1.10324e+07) > -> LineTo(x=6.09518e+06, y=1.00639e+07) > -> LineTo(x=6.09518e+06, y=1.53456e+07) > -> LineTo(x=1.261e+06, y=5.56309e+06) > -> LineTo(x=-4.57139e+06, y=-6.2412e+06) > -> LineTo(x=-4.57139e+06, y=-1.10324e+07) > -- You are receiving this mail because: You are watching all bug changes.
