Bug 382913 - crash after closing animation and trying to open a new doc
Summary: crash after closing animation and trying to open a new doc
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Animation (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-07-29 21:50 UTC by wolthera
Modified: 2017-11-27 08:48 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description wolthera 2017-07-29 21:50:26 UTC
The following backtrace:

Thread 1 (Thread 0x7ffff7e0a8c0 (LWP 7245)):
#0  0x00007ffff32c9954 in KisImage::animationInterface (this=0x1e37a420) at /home/wolthera/krita/src/libs/image/kis_image.cc:1690
#1  0x00007fffb2a48031 in KisTimeBasedItemModel::Private::baseNumFrames (this=0x1d583840)
    at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:62
#2  KisTimeBasedItemModel::Private::effectiveNumFrames (this=<optimized out>)
    at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:71
#3  KisTimeBasedItemModel::columnCount (this=<optimized out>, parent=...)
    at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:170
#4  0x00007ffff5cfd4bd in QItemSelectionModel::isRowSelected(int, QModelIndex const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff690b5c5 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff6915483 in QHeaderView::paintSection(QPainter*, QRect const&, int) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007fffb2a424b2 in TimelineLayersHeader::paintSection (this=0x1d59ecd0, painter=0x7fffffffb310, rect=..., logicalIndex=0)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_layers_header.cpp:117
#8  0x00007ffff69132b7 in QHeaderView::paintEvent(QPaintEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff66f36d8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff67d68fe in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff6906833 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff6914ce8 in QHeaderView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007fffb2a42d4b in TimelineLayersHeader::viewportEvent (this=0x1d59ecd0, e=0x7fffffffba00)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_layers_header.cpp:213
#14 0x00007ffff5d4a502 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff66b23d5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff66b9e07 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff7898f57 in KisApplication::notify (this=<optimized out>, receiver=0x1d5a3380, event=0x7fffffffba00)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:558
#18 0x00007ffff5d4a798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff66ec6ca in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff66ecd11 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff66c22b8 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff66c24f8 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff66dbb1f in QWidgetPrivate::syncBackingStore() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff66f38e8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff67e51cb in QMainWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff6ec67c7 in KMainWindow::event (this=this@entry=0x1185920, ev=ev@entry=0x1e191a30)
    at /home/wolthera/krita/src/libs/widgetutils/xmlgui/kmainwindow.cpp:780
---Type <return> to continue, or q <return> to quit---
#27 0x00007ffff6efebe9 in KXmlGuiWindow::event (this=0x1185920, ev=0x1e191a30) at /home/wolthera/krita/src/libs/widgetutils/xmlgui/kxmlguiwindow.cpp:125
#28 0x00007ffff66b23fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff66b9e07 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff7898f57 in KisApplication::notify (this=<optimized out>, receiver=0x1185920, event=0x1e191a30)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:558
#31 0x00007ffff5d4a798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#32 0x00007ffff5d4cf7b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#33 0x00007ffff5da0323 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#34 0x00007fffee383197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007fffee3833f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#36 0x00007fffee38349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#37 0x00007ffff5d9f92f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#38 0x00007ffff5d487ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#39 0x00007ffff68e1aa7 in QDialog::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff78c9799 in KisMainWindow::slotFileNew (this=<optimized out>) at /home/wolthera/krita/src/libs/ui/KisMainWindow.cpp:1366
#41 0x00007ffff78da4ca in KisMainWindow::qt_static_metacall (_o=0x1185920, _c=<optimized out>, _id=<optimized out>, _a=0x7fffffffc900)
    at /home/wolthera/krita/build/libs/ui/moc_KisMainWindow.cpp:311
#42 0x00007ffff5d76c19 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#43 0x00007ffff66abf22 in QAction::triggered(bool) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff66ae630 in QAction::activate(QAction::ActionEvent) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007ffff680a3ea in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007ffff6811826 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff68127c0 in QMenu::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007ffff66f36d8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007ffff6814c73 in QMenu::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#50 0x00007ffff66b23fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#51 0x00007ffff66baa2b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007ffff7898f57 in KisApplication::notify (this=<optimized out>, receiver=0x1dc94910, event=0x7fffffffcfa0)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:558
#53 0x00007ffff5d4a798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#54 0x00007ffff66b93cf in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#55 0x00007ffff670d856 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#56 0x00007ffff670fea3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#57 0x00007ffff66b23fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#58 0x00007ffff66b9e07 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#59 0x00007ffff7898f57 in KisApplication::notify (this=<optimized out>, receiver=0x1db2f930, event=0x7fffffffd420)
    at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:558
#60 0x00007ffff5d4a798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
---Type <return> to continue, or q <return> to quit---
#61 0x00007ffff613b940 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#62 0x00007ffff613d8a5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#63 0x00007ffff6117ceb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#64 0x00007fffe58aee00 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#65 0x00007fffee383197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#66 0x00007fffee3833f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#67 0x00007fffee38349c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#68 0x00007ffff5d9f92f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#69 0x00007ffff5d487ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#70 0x00007ffff5d51704 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#71 0x0000000000405193 in main (argc=1, argv=<optimized out>) at /home/wolthera/krita/src/krita/main.cc:272
(gdb)

Other things of note: for some reason the timeline didn't empty itself after closing the animation file. We have had the same problem with the layer stack for a while now.
Comment 1 wolthera 2017-08-19 19:56:54 UTC
A very similar crash, also on close of animation file:

Thread 1 "krita" received signal SIGSEGV, Segmentation fault.
KisImageAnimationInterface::totalLength (this=0x1df48800) at /home/wolthera/krita/src/libs/image/kis_image_animation_interface.cpp:392
392         if (m_d->cachedLastFrameValue < 0) {
(gdb) thread apply all backtrace

Thread 10 (Thread 0x7fffaf190700 (LWP 9427)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff5b728eb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff68ced8a in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#3  0x00007ffff5b71989 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007fffef9746ba in start_thread (arg=0x7fffaf190700) at pthread_create.c:333
#5  0x00007ffff52683dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 9 (Thread 0x7fffae98f700 (LWP 9426)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007ffff5b728eb in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff5b6ba16 in QSemaphore::tryAcquire(int, int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff31e4243 in KisTileDataSwapper::waitForWork (this=<optimised out>) at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#4  0x00007ffff31e443a in KisTileDataSwapper::run (this=0x7ffff36b4b00 <(anonymous namespace)::Q_QGS_s_instance::innerFunction()::holder+64>)
    at /home/wolthera/krita/src/libs/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#5  0x00007ffff5b71989 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffef9746ba in start_thread (arg=0x7fffae98f700) at pthread_create.c:333
#7  0x00007ffff52683dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 3 (Thread 0x7fffd7aaf700 (LWP 9408)):
#0  0x00007ffff525c70d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007fffee37c38c in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffee37c49c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007ffff5d9a92f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007ffff5d437ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff5b6ccd4 in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007fffefb9fb75 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff5b71989 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007fffef9746ba in start_thread (arg=0x7fffd7aaf700) at pthread_create.c:333
#9  0x00007ffff52683dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 2 (Thread 0x7fffe3228700 (LWP 9406)):
#0  0x00007ffff525c70d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007ffff3911c62 in ?? () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007ffff39138d7 in xcb_wait_for_event () from /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fffe5570329 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffff5b71989 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007fffef9746ba in start_thread (arg=0x7fffe3228700) at pthread_create.c:333
#6  0x00007ffff52683dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

---Type <return> to continue, or q <return> to quit---
Thread 1 (Thread 0x7ffff7e0a8c0 (LWP 9400)):
#0  KisImageAnimationInterface::totalLength (this=0x1df48800) at /home/wolthera/krita/src/libs/image/kis_image_animation_interface.cpp:392
#1  0x00007fffb6815093 in KisTimeBasedItemModel::Private::baseNumFrames (this=0x1d4964a0)
    at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:65
#2  KisTimeBasedItemModel::Private::effectiveNumFrames (this=<optimised out>) at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:71
#3  KisTimeBasedItemModel::columnCount (this=<optimised out>, parent=...) at /home/wolthera/krita/src/plugins/dockers/animation/kis_time_based_item_model.cpp:170
#4  0x00007ffff5cf84bd in QItemSelectionModel::isRowSelected(int, QModelIndex const&) const () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007ffff69065c5 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff6910483 in QHeaderView::paintSection(QPainter*, QRect const&, int) const () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007fffb680f502 in TimelineLayersHeader::paintSection (this=0x1d4b4170, painter=0x7fffffffa750, rect=..., logicalIndex=0)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_layers_header.cpp:117
#8  0x00007ffff690e2b7 in QHeaderView::paintEvent(QPaintEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff66ee6d8 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff67d18fe in QFrame::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff6901833 in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff690fce8 in QHeaderView::viewportEvent(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007fffb680fd9b in TimelineLayersHeader::viewportEvent (this=0x1d4b4170, e=0x7fffffffae40)
    at /home/wolthera/krita/src/plugins/dockers/animation/timeline_layers_header.cpp:213
#14 0x00007ffff5d45502 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff66ad3d5 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff66b4e07 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff7898947 in KisApplication::notify (this=<optimised out>, receiver=0x1d4b8830, event=0x7fffffffae40) at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:556
#18 0x00007ffff5d45798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007ffff66e76ca in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff66e7d11 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#21 0x00007ffff66e8a0c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff66e7881 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff66e8a0c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#24 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#27 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore---Type <return> to continue, or q <return> to quit---
*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#29 0x00007ffff66e7881 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#30 0x00007ffff66e8a0c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#31 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff66e7881 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff66e8a0c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#34 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#37 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#40 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007ffff66e88f9 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#43 0x00007ffff66e7881 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007ffff66bd320 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#45 0x00007ffff66bda75 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#46 0x00007ffff670a41c in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007ffff670aed3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007ffff66ad3fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007ffff66b4e07 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#50 0x00007ffff7898947 in KisApplication::notify (this=<optimised out>, receiver=0x1b9ec1b0, event=0x7fffffffd400) at /home/wolthera/krita/src/libs/ui/KisApplication.cpp:556
#51 0x00007ffff5d45798 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#52 0x00007ffff6137ced in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#53 0x00007ffff613891d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
---Type <return> to continue, or q <return> to quit---
#54 0x00007ffff6112ceb in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#55 0x00007fffe55cee00 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#56 0x00007fffee37c197 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#57 0x00007fffee37c3f0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#58 0x00007fffee37c49c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#59 0x00007ffff5d9a92f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#60 0x00007ffff5d437ca in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#61 0x00007ffff5d4c704 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#62 0x00000000004051b4 in main (argc=1, argv=<optimised out>) at /home/wolthera/krita/src/krita/main.cc:269
(gdb) 
(gdb) 

The big difference is that this is AFTER the first async branch merge.
Comment 2 Halla Rempt 2017-11-21 09:23:29 UTC
Hm... I cannot reproduce it, and I don't see how this can happen -- the code does check whether the weak shared pointer to the image is still valid.

    int baseNumFrames() const {
        if (image.isNull()) return 0;

        KisImageAnimationInterface *i = image->animationInterface();
        if (!i) return 1;

        return i->totalLength();
    }

Can you still reproduce the crash?
Comment 3 Halla Rempt 2017-11-27 08:48:58 UTC
Git commit b4e91f627b85af4bd02b54935c7a770e125bf3ed by Boudewijn Rempt.
Committed on 27/11/2017 at 08:48.
Pushed by rempt into branch 'master'.

Fix a possible crash on closing an animation

We should always create a strongref from a weak shared pointer
before dereferencing.

M  +4    -2    plugins/dockers/animation/kis_time_based_item_model.cpp

https://commits.kde.org/krita/b4e91f627b85af4bd02b54935c7a770e125bf3ed