Bug 289652

Summary: konsole crash after context menu incompletely shown
Product: [Applications] konsole Reporter: Frans Oilinki <moilinki>
Component: generalAssignee: Konsole Developer <konsole-devel>
Severity: crash CC: adaptee
Priority: NOR    
Version: 2.4.5   
Target Milestone: ---   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:

Description Frans Oilinki 2011-12-23 10:37:14 UTC
Application: konsole (2.4.5)
KDE Platform Version: 4.4.5 (KDE 4.4.5)
Qt Version: 4.6.2
Operating System: Linux 2.6.32-36-generic x86_64
Distribution: Ubuntu 10.04.3 LTS

-- Information about the crash:
Running Kubuntu 10.04, everything up-to-date.

I am not sure exactly what happened, because uncontrolled human factor was involved (mouse mal-operated in crowded physical desk). But konsole is one of the most awkward of software entities to crash (some many things can be lost this way - I had about twenty important things going on in different windows and tabs), so my wish and hope is that the stack trace is useful for spotting potential bug and preventing this kind of thing happening to somebody else.

I think the crash involved starting to show a context menu, probably because of pressing right mouse button, but not quite having enough time to draw it completely and receiving some action due to my fingers stumbling on the mouse button (too crowded desk and awkward body positions). My intention was copy from one tab and paste to another. So this might be relevant here. Note that some esoteric timing issue can also be involved here, e.g. receiving mouse button event before some initialization finished --  due to my stock Ubuntu Linux kernel having some scheduling/memory management related problems it sometimes takes seconds to draw a simple menu even with relatively inactive machine.

P.S. I think terminal application should be designed more resiliently. If many tabs and windows are open, a crash should not bring everything down. Basically I am advocating proper isolation of the terminal environments here (separate processes, compare google chrome design).

Some people live through the terminal, with carefully constructed sets of ssh sessions to different remote locations, software development with debugging and testing organized to different tabs, longish running system adminstration operations, ... Note also that some people (that at least includes me) like to launch most of the programs (mplayer/pdf reader/libreoffice/...) from the command line where current working directory works as a kind of bookmark and can also be awkward to lose...  I stress again that for  such people it is one of the most unbearable crashes to lose all the terminal sessions like this!!!

 -- Backtrace:
Application: Konsole (kdeinit4), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f99bd1a0760 (LWP 3880))]

Thread 2 (Thread 0x7f99a74a9700 (LWP 7619)):
#0  0x00007f99ba1acf93 in *__GI___poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007f99b6b714a9 in ?? () from /lib/libglib-2.0.so.0
#2  0x00007f99b6b718fc in g_main_context_iteration () from /lib/libglib-2.0.so.0
#3  0x00007f99bb7b5566 in QEventDispatcherGlib::processEvents (this=0x22e2af0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:414
#4  0x00007f99bb78a992 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#5  0x00007f99bb78ad6c in QEventLoop::exec (this=0x7f99a74a8db0, flags=) at kernel/qeventloop.cpp:201
#6  0x00007f99bb694d59 in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:487
#7  0x00007f99bb76b178 in QInotifyFileSystemWatcherEngine::run (this=0x167a870) at io/qfilesystemwatcher_inotify.cpp:248
#8  0x00007f99bb697775 in QThreadPrivate::start (arg=0x167a870) at thread/qthread_unix.cpp:248
#9  0x00007f99bb4079ca in start_thread (arg=<value optimized out>) at pthread_create.c:300
#10 0x00007f99ba1b970d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#11 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f99bd1a0760 (LWP 3880)):
[KCrash Handler]
#5  QBasicAtomicInt::operator!= (this=0x180f770, _t=@0x7fffe869fac8) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:75
#6  QList<QWidget*>::detachShared (this=0x180f770, _t=@0x7fffe869fac8) at ../../include/QtCore/../../src/corelib/tools/qlist.h:127
#7  QList<QWidget*>::removeAll (this=0x180f770, _t=@0x7fffe869fac8) at ../../include/QtCore/../../src/corelib/tools/qlist.h:662
#8  0x00007f99ba973b42 in QWidget::removeAction (this=0x44c8f60, action=0x3ecd600) at kernel/qwidget.cpp:3014
#9  0x00007f99b031feca in Konsole::SessionController::showDisplayContextMenu(QPoint const&) () from /usr/lib/libkonsoleprivate.so
#10 0x00007f99b03213b1 in Konsole::SessionController::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkonsoleprivate.so
#11 0x00007f99bb79ee3f in QMetaObject::activate (sender=0x1fe6310, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x1) at kernel/qobject.cpp:3293
#12 0x00007f99b032eae5 in Konsole::TerminalDisplay::configureRequest(QPoint const&) () from /usr/lib/libkonsoleprivate.so
#13 0x00007f99b03351e2 in Konsole::TerminalDisplay::mousePressEvent(QMouseEvent*) () from /usr/lib/libkonsoleprivate.so
#14 0x00007f99ba97e569 in QWidget::event (this=0x1fe6310, event=0x7fffe86a06d0) at kernel/qwidget.cpp:7994
#15 0x00007f99b032f62d in Konsole::TerminalDisplay::event(QEvent*) () from /usr/lib/libkonsoleprivate.so
#16 0x00007f99ba92822c in QApplicationPrivate::notify_helper (this=0xdc6410, receiver=0x1fe6310, e=0x7fffe86a06d0) at kernel/qapplication.cpp:4300
#17 0x00007f99ba92eecb in QApplication::notify (this=0x7fffe86a13d0, receiver=0x1fe6310, e=0x7fffe86a06d0) at kernel/qapplication.cpp:3865
#18 0x00007f99bbcd3a16 in KApplication::notify (this=0x7fffe86a13d0, receiver=0x1fe6310, event=0x7fffe86a06d0) at ../../kdeui/kernel/kapplication.cpp:302
#19 0x00007f99bb78c06c in QCoreApplication::notifyInternal (this=0x7fffe86a13d0, receiver=0x1fe6310, event=0x7fffe86a06d0) at kernel/qcoreapplication.cpp:704
#20 0x00007f99ba92e0ae in QCoreApplication::sendEvent (receiver=0x1fe6310, event=0x7fffe86a06d0, alienWidget=0x1fe6310, nativeWidget=0x1dae3a0, buttonDown=<value optimized out>, 
    lastMouseReceiver=<value optimized out>, spontaneous=true) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#21 QApplicationPrivate::sendMouseEvent (receiver=0x1fe6310, event=0x7fffe86a06d0, alienWidget=0x1fe6310, nativeWidget=0x1dae3a0, buttonDown=<value optimized out>, 
    lastMouseReceiver=<value optimized out>, spontaneous=true) at kernel/qapplication.cpp:2965
#22 0x00007f99ba9adf65 in QETWidget::translateMouseEvent (this=0x1dae3a0, event=<value optimized out>) at kernel/qapplication_x11.cpp:4368
#23 0x00007f99ba9ac8ac in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fffe86a0ff0) at kernel/qapplication_x11.cpp:3501
#24 0x00007f99ba9d8882 in x11EventSourceDispatch (s=0xdc9cd0, callback=<value optimized out>, user_data=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:146
#25 0x00007f99b6b6d8c2 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#26 0x00007f99b6b71748 in ?? () from /lib/libglib-2.0.so.0
#27 0x00007f99b6b718fc in g_main_context_iteration () from /lib/libglib-2.0.so.0
#28 0x00007f99bb7b5513 in QEventDispatcherGlib::processEvents (this=0xd39140, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#29 0x00007f99ba9d846e in QGuiEventDispatcherGlib::processEvents (this=0x180f770, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#30 0x00007f99bb78a992 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#31 0x00007f99bb78ad6c in QEventLoop::exec (this=0x7fffe86a1320, flags=) at kernel/qeventloop.cpp:201
#32 0x00007f99bb78eaab in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981
#33 0x00007f99b058de66 in kdemain () from /usr/lib/libkdeinit4_konsole.so
#34 0x00000000004070f3 in launch (argc=3, _name=<value optimized out>, args=<value optimized out>, cwd=<value optimized out>, envc=24, envs=<value optimized out>, reset_env=false, tty=0x0, 
    avoid_loops=false, startup_id_str=0x40a4f9 "0") at ../../kinit/kinit.cpp:717
#35 0x0000000000407cb0 in handle_launcher_request (sock=8, who=<value optimized out>) at ../../kinit/kinit.cpp:1209
#36 0x000000000040823a in handle_requests (waitForPid=0) at ../../kinit/kinit.cpp:1402
#37 0x0000000000408e22 in main (argc=4, argv=<value optimized out>, envp=<value optimized out>) at ../../kinit/kinit.cpp:1845

Reported using DrKonqi
Comment 1 Jekyll Wu 2011-12-23 12:54:05 UTC
Thanks for reporting!

I think the reported crash is the same as bug 233377, which has been fixed recently.

I tend to agree with your PS part. Bug 251351 is another specific example where Konsole users might suffer from. But I don't know whether separate process is the right solution. 

I plan to close this report as DUPLICATE. Could you please open another wish for your PS part? 

Finally, it is a good idea to upgrade your KDE SC after 4.8 is released. KDE SC 4.4.x is a bit old. I think Konsole have improved a lot since then :)
Comment 2 Jekyll Wu 2011-12-25 03:15:34 UTC

*** This bug has been marked as a duplicate of bug 233377 ***