Bug 341798 - Konsole crash immediately when launched or new tab created
Summary: Konsole crash immediately when launched or new tab created
Status: RESOLVED FIXED
Alias: None
Product: konsole
Classification: Applications
Component: general (show other bugs)
Version: 3.90.900
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Konsole Developer
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2014-12-12 09:21 UTC by Takahiro Hashimoto
Modified: 2015-02-28 15:40 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
fix the line property to 0(LINE_DEFAULT) (803 bytes, patch)
2015-02-23 07:27 UTC, Takahiro Hashimoto
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Takahiro Hashimoto 2014-12-12 09:21:36 UTC
Application: konsole (3.90.900)
 (Compiled from sources)
Qt Version: 5.4.0
Operating System: Linux 3.17.4-302.fc21.x86_64 x86_64
Distribution (Platform): Fedora RPMs

-- Information about the crash:
- What I was doing when the application crashed:

 * Konsole crashes very often when launching, almost everytime when createing new tab.

Fedora 20/21 x86_64
Qt 5.4 branch from source latest at present
kf5 and plasma-workspaces konsole are latest at present
built them by kdesrc-build

The crash can be reproduced sometimes.

-- Backtrace:
Application: Konsole (konsole), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f6be19438c0 (LWP 1591))]

Thread 3 (Thread 0x7f6bd995e700 (LWP 1592)):
#0  0x00007f6bed7d11dd in poll () at /lib64/libc.so.6
#1  0x00007f6beadca182 in _xcb_conn_wait () at /lib64/libxcb.so.1
#2  0x00007f6beadcbcff in xcb_wait_for_event () at /lib64/libxcb.so.1
#3  0x00007f6bdb30c049 in  () at /opt/qt/5.4/plugins/platforms/libqxcb.so
#4  0x00007f6bee3692cf in  () at /opt/qt/5.4/lib/libQt5Core.so.5
#5  0x00007f6beb8c152a in start_thread () at /lib64/libpthread.so.0
#6  0x00007f6bed7dc77d in clone () at /lib64/libc.so.6

Thread 2 (Thread 0x7f6bd02f3700 (LWP 1593)):
#0  0x00007f6beb8c6590 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libpthread.so.0
#1  0x00007f6bd284440b in radeon_drm_cs_emit_ioctl () at /usr/lib64/dri/r600_dri.so
#2  0x00007f6bd2843c97 in impl_thrd_routine () at /usr/lib64/dri/r600_dri.so
#3  0x00007f6beb8c152a in start_thread () at /lib64/libpthread.so.0
#4  0x00007f6bed7dc77d in clone () at /lib64/libc.so.6

Thread 1 (Thread 0x7f6be19438c0 (LWP 1591)):
[KCrash Handler]
#6  0x00007f6bed7108c7 in raise () at /lib64/libc.so.6
#7  0x00007f6bed71252a in abort () at /lib64/libc.so.6
#8  0x00007f6bee356e6c in QMessageLogger::fatal(char const*, ...) const () at /opt/qt/5.4/lib/libQt5Core.so.5
#9  0x00007f6bee352581 in  () at /opt/qt/5.4/lib/libQt5Core.so.5
#10 0x00007f6bf445039b in QVector<unsigned char>::operator[](int) const (this=0x106be08, i=0) at /opt/qt/5.4/include/QtCore/qvector.h:392
#11 0x00007f6bf444ce25 in Konsole::TerminalDisplay::inputMethodQuery(Qt::InputMethodQuery) const (this=0x106bd50, query=Qt::ImSurroundingText) at /home/thashimo/devel/kf5/src/kde/applications/konsole/src/TerminalDisplay.cpp:2833
#12 0x00007f6beee99533 in QWidget::event(QEvent*) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#13 0x00007f6bf444d83d in Konsole::TerminalDisplay::event(QEvent*) (this=0x106bd50, event=0x7fffc1f3fdf0) at /home/thashimo/devel/kf5/src/kde/applications/konsole/src/TerminalDisplay.cpp:3040
#14 0x00007f6beee5865c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#15 0x00007f6beee5d950 in QApplication::notify(QObject*, QEvent*) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#16 0x00007f6bee5458c3 in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /opt/qt/5.4/lib/libQt5Core.so.5
#17 0x00007f6bd8b0bf51 in  () at /opt/qt/5.4/plugins/platforminputcontexts/libim-qimsys-qt5.so
#18 0x00007f6bd8b10ace in  () at /opt/qt/5.4/plugins/platforminputcontexts/libim-qimsys-qt5.so
#19 0x00007f6bee8721e2 in QGuiApplicationPrivate::_q_updateFocusObject(QObject*) () at /opt/qt/5.4/lib/libQt5Gui.so.5
#20 0x00007f6bee573b59 in QMetaObject::activate(QObject*, int, int, void**) () at /opt/qt/5.4/lib/libQt5Core.so.5
#21 0x00007f6bee874cd2 in QWindow::focusObjectChanged(QObject*) () at /opt/qt/5.4/lib/libQt5Gui.so.5
#22 0x00007f6beee93f27 in QWidget::setFocus(Qt::FocusReason) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#23 0x00007f6beee5b4f2 in QApplication::setActiveWindow(QWidget*) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#24 0x00007f6beee5b603 in QApplicationPrivate::notifyActiveWindowChange(QWindow*) () at /opt/qt/5.4/lib/libQt5Widgets.so.5
#25 0x00007f6bee8725c5 in QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) () at /opt/qt/5.4/lib/libQt5Gui.so.5
#26 0x00007f6bee87284d in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /opt/qt/5.4/lib/libQt5Gui.so.5
#27 0x00007f6bee8590ff in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt/5.4/lib/libQt5Gui.so.5
#28 0x00007f6bdb34c450 in  () at /opt/qt/5.4/plugins/platforms/libqxcb.so
#29 0x00007f6bea464aeb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#30 0x00007f6bea464e88 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#31 0x00007f6bea464f3c in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#32 0x00007f6bee59a097 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt/5.4/lib/libQt5Core.so.5
#33 0x00007f6bee5434c2 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /opt/qt/5.4/lib/libQt5Core.so.5
#34 0x00007f6bee54aaed in QCoreApplication::exec() () at /opt/qt/5.4/lib/libQt5Core.so.5
#35 0x00007f6bf471770c in kdemain(int, char**) (argc=1, argv=0x7fffc1f40938) at /home/thashimo/devel/kf5/src/kde/applications/konsole/src/main.cpp:90
#36 0x0000000000400bb8 in main(int, char**) (argc=1, argv=0x7fffc1f40938) at /home/thashimo/devel/kf5/build/kde/applications/konsole/src/konsole_dummy.cpp:3

Reported using DrKonqi
Comment 1 Takahiro Hashimoto 2015-02-23 07:25:50 UTC
I have investigated this issue and found out PlainTextDecoder::decodeLine() failed in TerminalDisplay.cpp:2830

------
    case Qt::ImSurroundingText: {
        // return the text from the current line
        QString lineText;
        QTextStream stream(&lineText);
        PlainTextDecoder decoder;
        decoder.begin(&stream);
        decoder.decodeLine(&_image[loc(0, cursorPos.y())], _usedColumns, _lineProperties[cursorPos.y()]);
        decoder.end();
        return lineText;
    }
-------

As I use qimsys, a Japanese input method written in Qt, TerminalDisplay::inputMethodQuery is called by event.

I checked PlainTextDecoder::decodeLine() implements. I think it need not care if line property is LINE_DEFAULT of LINE_WRAPPED when launching konsole at present. I suggest a patch to fix LineProperty to 0(LINE_DEFAULT) in inputMethodQuery.
Comment 2 Takahiro Hashimoto 2015-02-23 07:27:06 UTC
Created attachment 91230 [details]
fix the line property to 0(LINE_DEFAULT)
Comment 3 Kurt Hindenburg 2015-02-28 15:40:35 UTC
Git commit 7986af1d253c409e34b2d7aeae7032fdaccb64e5 by Kurt Hindenburg.
Committed on 28/02/2015 at 15:39.
Pushed by hindenburg into branch 'master'.

Prevent crashes upon startup and/or new tab when using input methods

TerminalDisplay::inputMethodQuery causes crashes when using non-standard
input methods.   Qt::ImSurroundingText was trying to use lineProperties
of the current line, but this parameter is ignored in decodeLine anyway.

Thanks to Takahiro Hashimoto kenya888 gmail com for report, research
and patch

M  +1    -1    src/TerminalDisplay.cpp

http://commits.kde.org/konsole/7986af1d253c409e34b2d7aeae7032fdaccb64e5