Bug 343758 - Crash when converting a shape with a pattern fill, to a vector selection
Summary: Crash when converting a shape with a pattern fill, to a vector selection
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (other bugs)
Version First Reported In: 2.9 Beta
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Halla Rempt
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-02-04 00:33 UTC by mvowada
Modified: 2015-02-06 15:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments
Crash when converting a shape with a pattern fill, to a vector selection - Backtrace (18.80 KB, text/plain)
2015-02-04 00:35 UTC, mvowada
Details

Note You need to log in before you can comment on or make changes to this bug.
Description mvowada 2015-02-04 00:33:22 UTC
I get a crash when converting a shape with a pattern fill to a vector selection with Krita Beta 2 (git 066c942) (see backtrace in comment below)

Reproducible: Always

Steps to Reproduce:
1. New document
2. Create a shape in a Vector layer, with a pattern fill
3. (Menu) > Select > "Convert Shapes to Vector Selection"

Actual Results:  
Krita crash
Comment 1 mvowada 2015-02-04 00:35:00 UTC
Created attachment 90904 [details]
Crash when converting a shape with a pattern fill, to a vector selection - Backtrace
Comment 2 Halla Rempt 2015-02-04 13:47:09 UTC
Eek, I get a crash when creating the vector shape with pattern:

Thread 1 (Thread 0x7fc96aaaf7c0 (LWP 18025)):
[KCrash Handler]
#5  0x00007fc963bf5eb1 in QImage::QImage(QImage const&) () at /usr/lib64/libQtGui.so.4
#6  0x00007fc966e7a93d in KoPattern::pattern() const (this=<optimized out>) at /home/boud/kde/src/2.9/libs/pigment/resources/KoPattern.cpp:370
#7  0x00007fc96a32986b in KisToolShape::addShape(KoShape*) (this=this@entry=0x4f96cb0, shape=shape@entry=0x4810130) at /home/boud/kde/src/2.9/krita/ui/tool/kis_tool_shape.cc:170
#8  0x00007fc9430cf1cf in KisToolRectangle::finishRect(QRectF const&) (this=this@entry=0x4f96cb0, rect=...) at /home/boud/kde/src/2.9/krita/plugins/tools/defaulttools/kis_tool_rectangle.cc:80
#9  0x00007fc96a32f325 in KisToolRectangleBase::endPrimaryAction(KoPointerEvent*) (this=0x4f96cb0, event=0x7fff03386e40) at /home/boud/kde/src/2.9/krita/ui/tool/kis_tool_rectangle_base.cpp:190
#10 0x00007fc96a0c7cd4 in KisToolProxy::forwardToTool(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QPointF const&) (this=this@entry=0x40f7a30, state=state@entry=KisToolProxy::END, action=action@entry=KisTool::Primary, event=event@entry=0x7fff033874d0, docPoint=...) at /home/boud/kde/src/2.9/krita/ui/canvas/kis_tool_proxy.cpp:180
#11 0x00007fc96a0c80ea in KisToolProxy::forwardEvent(KisToolProxy::ActionState, KisTool::ToolAction, QEvent*, QEvent*, QTabletEvent*) (this=0x40f7a30, state=state@entry=KisToolProxy::END, action=action@entry=KisTool::Primary, event=event@entry=0x7fff033874d0, originalEvent=originalEvent@entry=0x7fff033874d0, lastTabletEvent=lastTabletEvent@entry=0x0) at /home/boud/kde/src/2.9/krita/ui/canvas/kis_tool_proxy.cpp:133
#12 0x00007fc96a3a220b in KisToolInvocationAction::end(QEvent*) (this=0x303d640, event=0x7fff033874d0) at /home/boud/kde/src/2.9/krita/ui/input/kis_tool_invocation_action.cpp:132
#13 0x00007fc96a3ae359 in KisShortcutMatcher::tryEndRunningShortcut(Qt::MouseButton, QMouseEvent*) (this=this@entry=0x303d160, button=<optimized out>, event=event@entry=0x7fff033874d0) at /home/boud/kde/src/2.9/krita/ui/input/kis_shortcut_matcher.cpp:439
#14 0x00007fc96a3aee8a in KisShortcutMatcher::buttonReleased(Qt::MouseButton, QMouseEvent*) (this=0x303d160, button=Qt::LeftButton, event=event@entry=0x7fff033874d0) at /home/boud/kde/src/2.9/krita/ui/input/kis_shortcut_matcher.cpp:193
#15 0x00007fc96a39d22e in KisInputManager::eventFilter(QObject*, QEvent*) (this=0x303d090, object=<optimized out>, event=0x7fff033874d0) at /home/boud/kde/src/2.9/krita/ui/input/kis_input_manager.cpp:640
#16 0x00007fc963133416 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (this=<optimized out>, receiver=0x190c0a0, event=0x7fff033874d0) at kernel/qcoreapplication.cpp:1063
#17 0x00007fc963b4174c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQtGui.so.4
#18 0x00007fc963b47dea in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQtGui.so.4
#19 0x00007fc96a3ded37 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x190c0a0, event=0x7fff033874d0) at /home/boud/kde/src/2.9/krita/ui/KisApplication.cpp:488
#20 0x00007fc9631332ad in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7fff03387d00, receiver=0x190c0a0, event=0x7fff033874d0) at kernel/qcoreapplication.cpp:953
#21 0x00007fc963b475e3 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQtGui.so.4
#22 0x00007fc963bb8c9b in  () at /usr/lib64/libQtGui.so.4
#23 0x00007fc963bb770c in QApplication::x11ProcessEvent(_XEvent*) () at /usr/lib64/libQtGui.so.4
#24 0x00007fc963bdef30 in  () at /usr/lib64/libQtGui.so.4
#25 0x00007fc963131e6f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff03387ab0, flags=...) at kernel/qeventloop.cpp:149
#26 0x00007fc963132165 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff03387ab0, flags=...) at kernel/qeventloop.cpp:204
#27 0x00007fc9631375b9 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1225
#28 0x0000000000402a71 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/boud/kde/src/2.9/krita/main.cc:170
Comment 3 Halla Rempt 2015-02-04 13:47:38 UTC
But that's because for some reason there's no active pattern _again_.
Comment 4 Halla Rempt 2015-02-04 13:48:17 UTC
And confirmed:

Thread 1 (Thread 0x7fd2d62bc7c0 (LWP 18090)):
[KCrash Handler]
#5  0x00007fd2cd538187 in raise () at /lib64/libc.so.6
#6  0x00007fd2cd539538 in abort () at /lib64/libc.so.6
#7  0x00007fd2ce8342b4 in qt_message_output(QtMsgType, char const*) (msgType=msgType@entry=QtFatalMsg, buf=<optimized out>) at global/qglobal.cpp:2359
#8  0x00007fd2ce834439 in qt_message(QtMsgType, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, msg=msg@entry=0x7fd2ce9a1858 "ASSERT: \"%s\" in file %s, line %d", ap=ap@entry=0x7fffff6bf258) at global/qglobal.cpp:2405
#9  0x00007fd2ce834c44 in qFatal(char const*, ...) (msg=msg@entry=0x7fd2ce9a1858 "ASSERT: \"%s\" in file %s, line %d") at global/qglobal.cpp:2588
#10 0x00007fd2ce834c8a in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:2054
#11 0x00007fd2d29830b3 in KoShape::loadOdfFill(KoShapeLoadingContext&) const (this=this@entry=0x7235a50, context=...) at /home/boud/kde/src/2.9/libs/flake/KoShape.cpp:1635
#12 0x00007fd2d2983297 in KoShape::loadStyle(KoXmlElement const&, KoShapeLoadingContext&) (this=this@entry=0x7235a50, element=..., context=...) at /home/boud/kde/src/2.9/libs/flake/KoShape.cpp:1435
#13 0x00007fd2d2a06a9a in KoTosContainer::loadStyle(KoXmlElement const&, KoShapeLoadingContext&) (this=this@entry=0x7235a50, element=..., context=...) at /home/boud/kde/src/2.9/libs/flake/KoTosContainer.cpp:102
#14 0x00007fd2d296bfed in KoPathShape::loadStyle(KoXmlElement const&, KoShapeLoadingContext&) (this=0x7235a50, element=..., context=...) at /home/boud/kde/src/2.9/libs/flake/KoPathShape.cpp:323
#15 0x00007fd2d29879a3 in KoShape::loadOdfAttributes(KoXmlElement const&, KoShapeLoadingContext&, int) (this=this@entry=0x7235a50, element=..., context=..., attributes=attributes@entry=2014) at /home/boud/kde/src/2.9/libs/flake/KoShape.cpp:1576
#16 0x00007fd2b9497db4 in RectangleShape::loadOdf(KoXmlElement const&, KoShapeLoadingContext&) (this=0x7235a50, element=..., context=...) at /home/boud/kde/src/2.9/plugins/pathshapes/rectangle/RectangleShape.cpp:53
#17 0x00007fd2d29b37e0 in KoShapeFactoryBase::createShapeFromOdf(KoXmlElement const&, KoShapeLoadingContext&) (this=0x283eb20, element=..., context=...) at /home/boud/kde/src/2.9/libs/flake/KoShapeFactoryBase.cpp:234
#18 0x00007fd2d29aea34 in KoShapeRegistry::Private::createShapeInternal(KoXmlElement const&, KoShapeLoadingContext&, KoXmlElement const&) const (this=<optimized out>, fullElement=..., context=..., element=...) at /home/boud/kde/src/2.9/libs/flake/KoShapeRegistry.cpp:313
#19 0x00007fd2d29afb49 in KoShapeRegistry::createShapeFromOdf(KoXmlElement const&, KoShapeLoadingContext&) const (this=0x27e9e00, e=..., context=...) at /home/boud/kde/src/2.9/libs/flake/KoShapeRegistry.cpp:268
#20 0x00007fd2d5bcc612 in KisShapeSelectionPaste::process(KoXmlElement const&, KoOdfReadStore&) (this=0x7fffff6bfcc0, body=..., odfStore=...) at /home/boud/kde/src/2.9/krita/ui/actions/kis_selection_action_factories.cpp:455
#21 0x00007fd2d0f1c191 in KoOdfPaste::paste(KoOdf::DocumentType, QByteArray const&) (this=this@entry=0x7fffff6bfcc0, documentType=documentType@entry=KoOdf::Text, bytes=...) at /home/boud/kde/src/2.9/libs/odf/KoOdfPaste.cpp:85
#22 0x00007fd2d0f1c3a6 in KoOdfPaste::paste(KoOdf::DocumentType, QMimeData const*) (this=this@entry=0x7fffff6bfcc0, documentType=documentType@entry=KoOdf::Text, data=data@entry=0x5e4c470) at /home/boud/kde/src/2.9/libs/odf/KoOdfPaste.cpp:45
#23 0x00007fd2d5bc5774 in KisShapesToVectorSelectionActionFactory::run(KisViewManager*) (this=this@entry=0x7fffff6bfd20, view=0x3e70560) at /home/boud/kde/src/2.9/krita/ui/actions/kis_selection_action_factories.cpp:482
#24 0x00007fd2d5a67087 in KisSelectionManager::convertShapesToVectorSelection() (this=0x3e3b9f0) at /home/boud/kde/src/2.9/krita/ui/kis_selection_manager.cc:451
#25 0x00007fd2d5a6d5e5 in KisSelectionManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x3e3b9f0, _c=<optimized out>, _id=22, _a=<optimized out>) at /home/boud/kde/build/2.9/krita/ui/kis_selection_manager.moc:124
#26 0x00007fd2ce9541fa in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x3ee5120, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffff6bfeb0) at kernel/qobject.cpp:3576
#27 0x00007fd2cf348622 in QAction::triggered(bool) () at /usr/lib64/libQtGui.so.4
#28 0x00007fd2cf349fd3 in QAction::activate(QAction::ActionEvent) () at /usr/lib64/libQtGui.so.4
#29 0x00007fd2cf772b79 in  () at /usr/lib64/libQtGui.so.4
#30 0x00007fd2cf7770c9 in  () at /usr/lib64/libQtGui.so.4
#31 0x00007fd2d011ccb5 in KMenu::mouseReleaseEvent(QMouseEvent*) () at /usr/lib64/libkdeui.so.5
#32 0x00007fd2cf39dc0a in QWidget::event(QEvent*) () at /usr/lib64/libQtGui.so.4
#33 0x00007fd2cf77af2b in QMenu::event(QEvent*) () at /usr/lib64/libQtGui.so.4
#34 0x00007fd2cf34e76c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQtGui.so.4
#35 0x00007fd2cf354dea in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQtGui.so.4
#36 0x00007fd2d5bebd37 in KisApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x480d260, event=0x7fffff6c05f0) at /home/boud/kde/src/2.9/krita/ui/KisApplication.cpp:488
#37 0x00007fd2ce9402ad in QCoreApplication::notifyInternal(QObject*, QEvent*) (this=0x7fffff6c0df0, receiver=0x480d260, event=0x7fffff6c05f0) at kernel/qcoreapplication.cpp:953
#38 0x00007fd2cf3545e3 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /usr/lib64/libQtGui.so.4
#39 0x00007fd2cf3c5fcc in  () at /usr/lib64/libQtGui.so.4
#40 0x00007fd2cf3c470c in QApplication::x11ProcessEvent(_XEvent*) () at /usr/lib64/libQtGui.so.4
#41 0x00007fd2cf3ebf30 in  () at /usr/lib64/libQtGui.so.4
#42 0x00007fd2ce93ee6f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffff6c0ba0, flags=...) at kernel/qeventloop.cpp:149
#43 0x00007fd2ce93f165 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffff6c0ba0, flags=...) at kernel/qeventloop.cpp:204
#44 0x00007fd2ce9445b9 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1225
#45 0x0000000000402a71 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/boud/kde/src/2.9/krita/main.cc:170
Comment 5 Halla Rempt 2015-02-04 16:20:04 UTC
Git commit 2ff23d071b2214d29b24835b9411ff48279790ff by Boudewijn Rempt.
Committed on 04/02/2015 at 14:12.
Pushed by rempt into branch 'calligra/2.9'.

Note: I'm actually not sure that the _pattern_ gets transfered correctly.
But there's no crash anymore and the vector selection gets created.

M  +56   -54   krita/ui/actions/kis_selection_action_factories.cpp
M  +7    -6    krita/ui/flake/kis_shape_selection_model.cpp

http://commits.kde.org/calligra/2ff23d071b2214d29b24835b9411ff48279790ff
Comment 6 mvowada 2015-02-04 22:17:44 UTC
Great! It's working good with the new build (git be51bd9). Thank you
Comment 7 Halla Rempt 2015-02-06 15:15:05 UTC
Git commit 9def6a99cf6c351501b89e4e569d29d5a576b7a4 by Boudewijn Rempt.
Committed on 04/02/2015 at 14:12.
Pushed by rempt into branch 'master'.

Note: I'm actually not sure that the _pattern_ gets transfered correctly.
But there's no crash anymore and the vector selection gets created.

M  +56   -54   krita/ui/actions/kis_selection_action_factories.cpp
M  +7    -6    krita/ui/flake/kis_shape_selection_model.cpp

http://commits.kde.org/calligra/9def6a99cf6c351501b89e4e569d29d5a576b7a4