Summary: | crash when resizing tool options applet w/ select shapes tool+vector layer | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | sruz.tst |
Component: | General | Assignee: | Krita Bugs <krita-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | antti.savo, dimula73, scottpetrovic |
Priority: | NOR | Keywords: | drkonqi |
Version: | 4.0.1 | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | https://commits.kde.org/krita/29df640252a5efb1329694379980fad39d5872fd | Version Fixed In: | |
Sentry Crash Report: |
Description
sruz.tst
2018-04-17 09:00:18 UTC
Does this crash consistently with certain steps? Or did this just happen one time? These errors look very Qt specific, so it might not be something we can fix. Seems to happen consistently, with these steps: 1) open (jpg) image 2) add text using text tool 3) pick "select shapes tool" (remaining on the newly created vector layer) 4) pick the text 5) select the second tab in "tool options" applet (outline properties) 6) try to enlarge the tool options applet by dragging the bottom border 7) => crash Some of these steps may not be necessary, but this is what I've tested couple times and what seems to reliably cause crash. I haven't had much time, I can do more testing later with clean config etc. Thanks for the detailed steps I was able to confirm this. https://webmshare.com/0BVnw (gdb) bt #0 0x00007ffff44f40bb in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007ffff44f5f5d in __GI_abort () at abort.c:90 #2 0x00007ffff453e28d in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff4665528 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:181 #3 0x00007ffff454564a in malloc_printerr (action=<optimized out>, str=0x7ffff4665888 "free(): invalid next size (normal)", ptr=<optimized out>, ar_ptr=<optimized out>) at malloc.c:5426 #4 0x00007ffff454773e in _int_free (av=0x7ffff4897c20 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:4175 #5 0x00007ffff454c44e in __GI___libc_free (mem=<optimized out>) at malloc.c:3145 #6 0x00007ffff56c62b5 in QImageData::~QImageData() () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 #7 0x00007ffff56c6327 in QImage::~QImage() () at /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 #8 0x00007ffff75c117d in KisStopGradientSliderWidget::paintEvent(QPaintEvent*) (this=0x55556130c670, pe=0x7fffffffa930) at ./libs/ui/widgets/kis_stopgradient_slider_widget.cpp:117 #9 0x00007ffff5e7edc8 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #10 0x00007ffff5e3e46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #11 0x00007ffff5e45d34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #12 0x00007ffff76aa495 in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffdda0, receiver=0x55556130c670, event=0x7fffffffa930) at ./libs/ui/KisApplication.cpp:652 #13 0x00007ffff50c3de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #14 0x00007ffff5e77f6a in QWidgetPrivate::sendPaintEvent(QRegion const&) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #15 0x00007ffff5e7852a in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #16 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #17 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #18 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #19 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #20 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #21 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #22 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #23 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #24 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #25 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #26 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #27 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #28 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #29 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #30 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #31 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #32 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #33 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #34 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #35 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #36 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #37 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #38 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #39 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #40 0x00007ffff5e79190 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #41 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #42 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #43 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #44 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #45 0x00007ffff5e79319 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #46 0x00007ffff5e78136 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #47 0x00007ffff5e4da84 in () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #48 0x00007ffff5e4dcc5 in () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #49 0x00007ffff5e6753f in QWidgetPrivate::syncBackingStore() () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #50 0x00007ffff5e7ef38 in QWidget::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #51 0x00007ffff5f6cbab in QMainWindow::event(QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #52 0x00007ffff6aab839 in KMainWindow::event(QEvent*) (this=0x555556b4eab0, ev=0x555560d80f70) at ./libs/widgetutils/xmlgui/kmainwindow.cpp:780 #53 0x00007ffff6ae33d1 in KXmlGuiWindow::event(QEvent*) (this=0x555556b4eab0, ev=0x555560d80f70) at ./libs/widgetutils/xmlgui/kxmlguiwindow.cpp:125 #54 0x00007ffff5e3e46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #55 0x00007ffff5e45d34 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #56 0x00007ffff76aa495 in KisApplication::notify(QObject*, QEvent*) (this=0x7fffffffdda0, receiver=0x555556b4eab0, event=0x555560d80f70) at ./libs/ui/KisApplication.cpp:652 #57 0x00007ffff50c3de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #58 0x00007ffff50c655d in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #59 0x00007ffff511ce53 in () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #60 0x00007fffec790fb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #61 0x00007fffec7911f0 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #62 0x00007fffec79127c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #63 0x00007ffff511c47f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #64 0x00007ffff50c1e3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 ---Type <return> to continue, or q <return> to quit--- #65 0x00007ffff50cada4 in QCoreApplication::exec() () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 #66 0x0000555555849423 in main(int, char**) (argc=1, argv=0x7fffffffdf28) at ./krita/main.cc:361 Git commit 19f6e2ab340570562a169599bbba5c59296807ac by Dmitry Kazakov. Committed on 18/04/2018 at 20:24. Pushed by dkazakov into branch 'master'. Fix crash when resizing the Tool Options for the shape selection tool KoFillConfigWidget should update visibility of the widgets explicitly in KoFillConfigWidget::activate() to ensure the widgets are really hidden (since recently shapeChanged() can skip the update if the mode hasn't changed) M +11 -2 libs/ui/kis_stopgradient_editor.cpp M +3 -0 libs/ui/widgets/KoFillConfigWidget.cpp M +4 -1 libs/ui/widgets/kis_stopgradient_slider_widget.cpp https://commits.kde.org/krita/19f6e2ab340570562a169599bbba5c59296807ac Just wanted to tell a big thank you to Antti Savolainen for a nice video with the reproduction steps. It helped fixing the bug a lot! :) Happy to help. Finding out the exact steps of crashes and recording a video of them happening is extremely fun when I know I make the the life of the people fixing it easier. Git commit 29df640252a5efb1329694379980fad39d5872fd by Boudewijn Rempt, on behalf of Dmitry Kazakov. Committed on 02/05/2018 at 11:54. Pushed by rempt into branch 'krita/4.0'. Fix crash when resizing the Tool Options for the shape selection tool KoFillConfigWidget should update visibility of the widgets explicitly in KoFillConfigWidget::activate() to ensure the widgets are really hidden (since recently shapeChanged() can skip the update if the mode hasn't changed) (cherry picked from commit 1ce1fc9276ca9dd95eedf6c6fe4a4888d6f63a4c) M +11 -2 libs/ui/kis_stopgradient_editor.cpp M +3 -0 libs/ui/widgets/KoFillConfigWidget.cpp M +4 -1 libs/ui/widgets/kis_stopgradient_slider_widget.cpp https://commits.kde.org/krita/29df640252a5efb1329694379980fad39d5872fd |