Bug 330331 - Crash on application exit
Summary: Crash on application exit
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: General (show other bugs)
Version: 2.8 Beta
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords: drkonqi, release_blocker
Depends on:
Blocks:
 
Reported: 2014-01-23 15:34 UTC by Halla Rempt
Modified: 2014-01-29 09:26 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Halla Rempt 2014-01-23 15:34:19 UTC
Application: krita (2.8 Beta 2 (git f4e6e96))
KDE Platform Version: 4.11.4
Qt Version: 4.8.5
Operating System: Linux 3.11.6-4-desktop x86_64
Distribution: "openSUSE 13.1 (Bottle) (x86_64)"

-- Information about the crash:
I had added a text box, double-clicked, added some text then closed Krita.

It looks as if some plugin doesn't implement all pure virtuals?

The crash can be reproduced sometimes.

-- Backtrace:
Application: Krita (krita), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f59cb7498c0 (LWP 22692))]

Thread 6 (Thread 0x7f59a9748700 (LWP 22693)):
#0  0x00007f59c38260af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f59c3ab9b66 in wait (time=18446744073709551615, this=0x1346400) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=mutex@entry=0x10489b0, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f59c3ab5cfb in QSemaphore::acquire (this=this@entry=0x13460e0, n=n@entry=1) at thread/qsemaphore.cpp:144
#4  0x00007f59ca65a7cc in waitForWork (this=0x13460d0) at /home/boud/kde/src/2.8/krita/image/tiles3/kis_tile_data_pooler.cc:162
#5  KisTileDataPooler::run (this=0x13460d0) at /home/boud/kde/src/2.8/krita/image/tiles3/kis_tile_data_pooler.cc:184
#6  0x00007f59c3ab968f in QThreadPrivate::start (arg=0x13460d0) at thread/qthread_unix.cpp:338
#7  0x00007f59c38220db in start_thread () from /lib64/libpthread.so.0
#8  0x00007f59c2ad890d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f59a8f47700 (LWP 22694)):
#0  0x00007f59c38260af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f59c3ab9b66 in wait (time=18446744073709551615, this=0x1346770) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=mutex@entry=0x1346740, time=time@entry=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f59c3ab6103 in QSemaphore::tryAcquire (this=0x13466f0, n=n@entry=1, timeout=timeout@entry=-1) at thread/qsemaphore.cpp:221
#4  0x00007f59ca687f23 in KisTileDataSwapper::waitForWork (this=this@entry=0x1346108) at /home/boud/kde/src/2.8/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:86
#5  0x00007f59ca68814a in KisTileDataSwapper::run (this=0x1346108) at /home/boud/kde/src/2.8/krita/image/tiles3/swap/kis_tile_data_swapper.cpp:92
#6  0x00007f59c3ab968f in QThreadPrivate::start (arg=0x1346108) at thread/qthread_unix.cpp:338
#7  0x00007f59c38220db in start_thread () from /lib64/libpthread.so.0
#8  0x00007f59c2ad890d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f59a70d4700 (LWP 22701)):
#0  0x00007f59c2ad1913 in select () from /lib64/libc.so.6
#1  0x00007f59c3be36fb in qt_safe_select (nfds=22, fdread=0x3474068, fdwrite=0x3474300, fdexcept=0x3474598, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f59c3be9374 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x3473eb0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f59c3be97d2 in QEventDispatcherUNIX::processEvents (this=0x34497f0, flags=...) at kernel/qeventdispatcher_unix.cpp:951
#4  0x00007f59c3bb7d0f in QEventLoop::processEvents (this=this@entry=0x7f59a70d3ce0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f59c3bb8005 in QEventLoop::exec (this=this@entry=0x7f59a70d3ce0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f59c3ab6fef in QThread::exec (this=this@entry=0x342b770) at thread/qthread.cpp:536
#7  0x00007f59c3b99513 in QInotifyFileSystemWatcherEngine::run (this=0x342b770) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f59c3ab968f in QThreadPrivate::start (arg=0x342b770) at thread/qthread_unix.cpp:338
#9  0x00007f59c38220db in start_thread () from /lib64/libpthread.so.0
#10 0x00007f59c2ad890d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f5996b93700 (LWP 22721)):
#0  0x00007f59c38260af in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f59c3ab9b66 in wait (time=18446744073709551615, this=0x3fc0f40) at thread/qwaitcondition_unix.cpp:86
#2  QWaitCondition::wait (this=<optimized out>, mutex=0x3fc0ae0, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:158
#3  0x00007f59c4d1fac6 in ?? () from /usr/lib64/libQtGui.so.4
#4  0x00007f59c3ab968f in QThreadPrivate::start (arg=0x3fc0ad0) at thread/qthread_unix.cpp:338
#5  0x00007f59c38220db in start_thread () from /lib64/libpthread.so.0
#6  0x00007f59c2ad890d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f5996392700 (LWP 22722)):
#0  0x00007f59c2ad1913 in select () from /lib64/libc.so.6
#1  0x00007f59c3be36fb in qt_safe_select (nfds=45, fdread=0x3fd2898, fdwrite=0x3fd2b30, fdexcept=0x3fd2dc8, orig_timeout=0x0) at kernel/qcore_unix.cpp:83
#2  0x00007f59c3be9374 in QEventDispatcherUNIXPrivate::doSelect (this=this@entry=0x3fd26e0, flags=..., timeout=0x0) at kernel/qeventdispatcher_unix.cpp:223
#3  0x00007f59c3be97d2 in QEventDispatcherUNIX::processEvents (this=0x2fd0350, flags=...) at kernel/qeventdispatcher_unix.cpp:951
#4  0x00007f59c3bb7d0f in QEventLoop::processEvents (this=this@entry=0x7f5996391ce0, flags=...) at kernel/qeventloop.cpp:149
#5  0x00007f59c3bb8005 in QEventLoop::exec (this=this@entry=0x7f5996391ce0, flags=...) at kernel/qeventloop.cpp:204
#6  0x00007f59c3ab6fef in QThread::exec (this=this@entry=0x3fc1100) at thread/qthread.cpp:536
#7  0x00007f59c3b99513 in QInotifyFileSystemWatcherEngine::run (this=0x3fc1100) at io/qfilesystemwatcher_inotify.cpp:256
#8  0x00007f59c3ab968f in QThreadPrivate::start (arg=0x3fc1100) at thread/qthread_unix.cpp:338
#9  0x00007f59c38220db in start_thread () from /lib64/libpthread.so.0
#10 0x00007f59c2ad890d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f59cb7498c0 (LWP 22692)):
[KCrash Handler]
#5  0x00007f59c2a26849 in raise () from /lib64/libc.so.6
#6  0x00007f59c2a27cd8 in abort () from /lib64/libc.so.6
#7  0x00007f59c331f655 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib64/libstdc++.so.6
#8  0x00007f59c331d7c6 in ?? () from /usr/lib64/libstdc++.so.6
#9  0x00007f59c331d7f3 in std::terminate() () from /usr/lib64/libstdc++.so.6
#10 0x00007f59c331e2cf in __cxa_pure_virtual () from /usr/lib64/libstdc++.so.6
#11 0x00007f59caf564c4 in KisToolInvocationAction::inputEvent (this=0x44a7570, event=0x7fff29416910) at /home/boud/kde/src/2.8/krita/ui/input/kis_tool_invocation_action.cpp:133
#12 0x00007f59caf57019 in KisToolInvocationAction::processUnhandledEvent (this=0x44a7570, event=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/input/kis_tool_invocation_action.cpp:140
#13 0x00007f59caf4f8e9 in KisInputManager::Private::processUnhandledEvent (this=0x44a2ed0, event=event@entry=0x7fff29416910) at /home/boud/kde/src/2.8/krita/ui/input/kis_input_manager.cpp:351
#14 0x00007f59caf539f1 in KisInputManager::eventFilter (this=0x44a2d20, object=<optimized out>, event=0x7fff29416910) at /home/boud/kde/src/2.8/krita/ui/input/kis_input_manager.cpp:776
#15 0x00007f59c3bb9216 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x44a8520, event=0x7fff29416910) at kernel/qcoreapplication.cpp:1059
#16 0x00007f59c484788c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#17 0x00007f59c484de70 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#18 0x00007f59ca291ca7 in KoApplication::notify (this=<optimized out>, receiver=0x44a8520, event=0x7fff29416910) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:598
#19 0x00007f59c3bb90ad in QCoreApplication::notifyInternal (this=0x7fff294176b0, receiver=0x44a8520, event=0x7fff29416910) at kernel/qcoreapplication.cpp:949
#20 0x00007f59c4893692 in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#21 0x00007f59cacaea49 in KisQPainterCanvas::~KisQPainterCanvas (this=0x44a8520, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/canvas/kis_qpainter_canvas.cpp:89
#22 0x00007f59c3bcf658 in QObjectPrivate::deleteChildren (this=0x4476850) at kernel/qobject.cpp:1916
#23 0x00007f59c4893617 in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#24 0x00007f59c7c56fee in ~Viewport (this=0x4476690, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/libs/flake/KoCanvasControllerWidgetViewport_p.h:37
#25 Viewport::~Viewport (this=0x4476690, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/libs/flake/KoCanvasControllerWidgetViewport_p.h:37
#26 0x00007f59c3bcf658 in QObjectPrivate::deleteChildren (this=0x4407a20) at kernel/qobject.cpp:1916
#27 0x00007f59c4893617 in QWidget::~QWidget() () from /usr/lib64/libQtGui.so.4
#28 0x00007f59cac99289 in KisCanvasController::~KisCanvasController (this=0x30243d0, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/canvas/kis_canvas_controller.cpp:89
#29 0x00007f59cae293bd in ~KisView2Private (this=0x43e12b0, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/kis_view2.cpp:181
#30 KisView2::~KisView2 (this=0x10461e0, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/kis_view2.cpp:478
#31 0x00007f59cae29629 in KisView2::~KisView2 (this=0x10461e0, __in_chrg=<optimized out>) at /home/boud/kde/src/2.8/krita/ui/kis_view2.cpp:479
#32 0x00007f59ca2c5936 in KoMainWindow::setRootDocument (this=this@entry=0x2ae33d0, doc=doc@entry=0x0, part=part@entry=0x0, deletePrevious=deletePrevious@entry=true) at /home/boud/kde/src/2.8/libs/main/KoMainWindow.cpp:574
#33 0x00007f59ca2ccd44 in KoMainWindow::closeEvent (this=0x2ae33d0, e=0x7fff29417090) at /home/boud/kde/src/2.8/libs/main/KoMainWindow.cpp:1158
#34 0x00007f59c48969fe in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#35 0x00007f59c4c4c643 in QMainWindow::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#36 0x00007f59c564a009 in KXmlGuiWindow::event(QEvent*) () from /usr/lib64/libkdeui.so.5
#37 0x00007f59c48478ac in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#38 0x00007f59c484de70 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#39 0x00007f59ca291ca7 in KoApplication::notify (this=<optimized out>, receiver=0x2ae33d0, event=0x7fff29417090) at /home/boud/kde/src/2.8/libs/main/KoApplication.cpp:598
#40 0x00007f59c3bb90ad in QCoreApplication::notifyInternal (this=0x7fff294176b0, receiver=0x2ae33d0, event=0x7fff29417090) at kernel/qcoreapplication.cpp:949
#41 0x00007f59c4893259 in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) () from /usr/lib64/libQtGui.so.4
#42 0x00007f59c48b1492 in QApplication::x11ClientMessage(QWidget*, _XEvent*, bool) () from /usr/lib64/libQtGui.so.4
#43 0x00007f59c48bde2f in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#44 0x00007f59c48e51f0 in ?? () from /usr/lib64/libQtGui.so.4
#45 0x00007f59c3bb7d0f in QEventLoop::processEvents (this=this@entry=0x7fff29417590, flags=...) at kernel/qeventloop.cpp:149
#46 0x00007f59c3bb8005 in QEventLoop::exec (this=this@entry=0x7fff29417590, flags=...) at kernel/qeventloop.cpp:204
#47 0x00007f59c3bbd13b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1221
#48 0x00007f59cb2f1bbc in kdemain (argc=<optimized out>, argv=<optimized out>) at /home/boud/kde/src/2.8/krita/main.cc:101
#49 0x00007f59c2a12be5 in __libc_start_main () from /lib64/libc.so.6
#50 0x0000000000400a01 in _start () at ../sysdeps/x86_64/start.S:122

Reported using DrKonqi
Comment 1 Dmitry Kazakov 2014-01-24 09:55:53 UTC
Probably, the input manager gets deleted after the default input action (which is KisToolInvocationAction) is already destroyed?
Comment 2 Dmitry Kazakov 2014-01-24 10:01:59 UTC
It looks like the text editor widget sends some event when being destroyed, but the event filter is already killed by this time
Comment 3 Dmitry Kazakov 2014-01-29 08:37:42 UTC
Git commit eb2d336f9c51f5df5b35bfa0c7e9f90bfa6749e2 by Dmitry Kazakov.
Committed on 29/01/2014 at 08:37.
Pushed by dkazakov into branch 'master'.

Fix crash on exit when the text tool is active

This patch makes KisCanvasController responsitive for installing
and removing the event filter onto canvas widget. It allows the
controller to remove the event filter before the destruction.

M  +1    -1    krita/ui/canvas/kis_canvas2.cpp
M  +17   -0    krita/ui/canvas/kis_canvas_controller.cpp
M  +1    -0    krita/ui/canvas/kis_canvas_controller.h
M  +4    -1    krita/ui/input/kis_input_manager.cpp
M  +1    -1    libs/flake/KoCanvasControllerWidget.h

http://commits.kde.org/calligra/eb2d336f9c51f5df5b35bfa0c7e9f90bfa6749e2
Comment 4 Dmitry Kazakov 2014-01-29 09:26:09 UTC
Git commit 3b388d877f5343b26d1d82846e76153b1b5b2c94 by Dmitry Kazakov.
Committed on 29/01/2014 at 08:37.
Pushed by dkazakov into branch 'calligra/2.8'.

Fix crash on exit when the text tool is active

This patch makes KisCanvasController responsitive for installing
and removing the event filter onto canvas widget. It allows the
controller to remove the event filter before the destruction.

M  +1    -1    krita/ui/canvas/kis_canvas2.cpp
M  +17   -0    krita/ui/canvas/kis_canvas_controller.cpp
M  +1    -0    krita/ui/canvas/kis_canvas_controller.h
M  +4    -1    krita/ui/input/kis_input_manager.cpp
M  +1    -1    libs/flake/KoCanvasControllerWidget.h

http://commits.kde.org/calligra/3b388d877f5343b26d1d82846e76153b1b5b2c94