Bug 389506 - Kate crashes when invoking some vi commmands with only one empty file open
Summary: Kate crashes when invoking some vi commmands with only one empty file open
Status: RESOLVED WAITINGFORINFO
Alias: None
Product: kate
Classification: Applications
Component: Vi Input Mode (show other bugs)
Version: 17.04.3
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2018-01-27 12:52 UTC by Franciszek Stachura
Modified: 2018-02-04 21:03 UTC (History)
0 users

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 Franciszek Stachura 2018-01-27 12:52:20 UTC
Application: kate (17.04.3)

Qt Version: 5.9.1
Frameworks Version: 5.41.0
Operating System: Linux 4.2.0 x86_64
Distribution: Ubuntu 17.10

-- Information about the crash:
Example commands that crash the editor:
:e <random file name, kate will crash even if path is correct>
:enew
Both of them crash kate only when there is one empty file open. If I would edit that file or open an already created one, both commands will work properly. Both File->New and File->Open work alright.

The crash can be reproduced every time.

-- Backtrace:
Application: Kate (kate), signal: Segmentation fault
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f1ceb4f41c0 (LWP 14030))]

Thread 3 (Thread 0x7f1cc9957700 (LWP 14032)):
#0  0x00007f1ce5eaa951 in __GI___poll (fds=0x7f1cc400f980, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f1cdff82169 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f1cdff8227c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f1ce67ea49b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7f1cc4000b10, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#4  0x00007f1ce678fe3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7f1cc9956c80, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#5  0x00007f1ce65af3ca in QThread::exec() (this=<optimized out>) at thread/qthread.cpp:515
#6  0x00007f1ce6c66e45 in  () at /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007f1ce65b429d in QThreadPrivate::start(void*) (arg=0x7f1ce6ed9d60) at thread/qthread_unix.cpp:368
#8  0x00007f1ce1c297fc in start_thread (arg=0x7f1cc9957700) at pthread_create.c:465
#9  0x00007f1ce5eb6b5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f1cd268a700 (LWP 14031)):
#0  0x00007f1ce5eaa951 in __GI___poll (fds=0x7f1cd2689bb8, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007f1ce204f747 in  () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007f1ce205153a in xcb_wait_for_event () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007f1cd4be4f09 in QXcbEventReader::run() (this=0x5575437907f0) at qxcbconnection.cpp:1322
#4  0x00007f1ce65b429d in QThreadPrivate::start(void*) (arg=0x5575437907f0) at thread/qthread_unix.cpp:368
#5  0x00007f1ce1c297fc in start_thread (arg=0x7f1cd268a700) at pthread_create.c:465
#6  0x00007f1ce5eb6b5f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f1ceb4f41c0 (LWP 14030)):
[KCrash Handler]
#6  0x00007f1ceb034a30 in KateVi::InputModeManager::reset() () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#7  0x00007f1ceb047d91 in  () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#8  0x00007f1ceb048200 in  () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#9  0x00007f1ceb043595 in  () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#10 0x00007f1ceb041b56 in KateVi::EmulatedCommandBar::handleKeyPress(QKeyEvent const*) () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#11 0x00007f1ceb0352a4 in KateVi::InputModeManager::handleKeypress(QKeyEvent const*) () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#12 0x00007f1ceb00302c in KateViInputMode::keyPress(QKeyEvent*) () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#13 0x00007f1ceb0030a2 in KateViInputMode::stealKey(QKeyEvent*) () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#14 0x00007f1ceaf86f50 in  () at /usr/lib/x86_64-linux-gnu/libKF5TextEditor.so.5
#15 0x00007f1ce6791acc in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) (receiver=receiver@entry=0x557547fb1800, event=event@entry=0x7ffebdc42ee0) at kernel/qcoreapplication.cpp:1129
#16 0x00007f1ce7c64445 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x5575437760b0, receiver=receiver@entry=0x557547fb1800, e=e@entry=0x7ffebdc42ee0) at kernel/qapplication.cpp:3713
#17 0x00007f1ce7c6d272 in QApplication::notify(QObject*, QEvent*) (this=<optimized out>, receiver=0x557547fb1800, e=0x7ffebdc42ee0) at kernel/qapplication.cpp:3111
#18 0x00007f1ce6791de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x55754609acc0, event=0x7ffebdc42ee0) at kernel/qcoreapplication.cpp:1018
#19 0x00007f1ce7cc1fa5 in QWidgetWindow::event(QEvent*) (this=0x557545c37c10, event=0x7ffebdc42ee0) at kernel/qwidgetwindow.cpp:236
#20 0x00007f1ce7c6446c in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=this@entry=0x5575437760b0, receiver=receiver@entry=0x557545c37c10, e=e@entry=0x7ffebdc42ee0) at kernel/qapplication.cpp:3717
#21 0x00007f1ce7c6bd34 in QApplication::notify(QObject*, QEvent*) (this=0x7ffebdc435d0, receiver=0x557545c37c10, e=0x7ffebdc42ee0) at kernel/qapplication.cpp:3476
#22 0x00007f1ce6791de8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=receiver@entry=0x557545c37c10, event=event@entry=0x7ffebdc42ee0) at kernel/qcoreapplication.cpp:1018
#23 0x00007f1ce74a5ab0 in QCoreApplication::sendSpontaneousEvent(QObject*, QEvent*) (event=0x7ffebdc42ee0, receiver=0x557545c37c10) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#24 0x00007f1ce74a5ab0 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) (e=0x557545b07980) at kernel/qguiapplication.cpp:2075
#25 0x00007f1ce74aaa05 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=0x557545b07980) at kernel/qguiapplication.cpp:1739
#26 0x00007f1ce7483065 in QWindowSystemInterfacePrivate::handleWindowSystemEvent<QWindowSystemInterface::SynchronousDelivery>(QWindowSystemInterfacePrivate::WindowSystemEvent*) (ev=0x557545b07980) at kernel/qwindowsysteminterface.cpp:101
#27 0x00007f1ce7486428 in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) (window=window@entry=0x557545c37c10, timestamp=3605493, keyCode=16777220, modifiers=..., nativeScanCode=36, nativeVirtualKey=65293, nativeModifiers=0, text=..., autorepeat=false, count=1) at kernel/qwindowsysteminterface.cpp:364
#28 0x00007f1ce74a59b7 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) (e=0x7f1ccc00b400) at kernel/qguiapplication.cpp:2056
#29 0x00007f1ce74aaa05 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (e=e@entry=0x7f1ccc00b400) at kernel/qguiapplication.cpp:1739
#30 0x00007f1ce7482cab in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (flags=...) at kernel/qwindowsysteminterface.cpp:939
#31 0x00007f1cd4c475a0 in userEventSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at qeventdispatcher_glib.cpp:77
#32 0x00007f1cdff81fb7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#33 0x00007f1cdff821f0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#34 0x00007f1cdff8227c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#35 0x00007f1ce67ea47f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x5575437d2ab0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#36 0x00007f1ce678fe3a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffebdc433d0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212
#37 0x00007f1ce6798da4 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1291
#38 0x0000557541cd7ce7 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ./kate/main.cpp:583

Reported using DrKonqi
Comment 1 Dominik Haumann 2018-02-04 19:52:05 UTC
I cannot reproduce with KDE Frameworks 5.43. Anyone else?

What do you mean by "one empty file"? An existing file with 0 bytes?
Comment 2 Franciszek Stachura 2018-02-04 20:02:36 UTC
(In reply to Dominik Haumann from comment #1)
> I cannot reproduce with KDE Frameworks 5.43. Anyone else?
> 
> What do you mean by "one empty file"? An existing file with 0 bytes?

No, just new, empty, untitled file. 
It might be worth noting that I have enabled the "Let Vi commands override Kate shortcuts" option.

I have KDE Frameworks 5.41.0 installed, so maybe the bug was really in the KDE Frameworks, not in Kate (since everything seems to be ok on 5.43.0 as you say).
Comment 3 Dominik Haumann 2018-02-04 20:28:39 UTC
I am not yet convinced that this really works. Can you test again with a newer version at some point in time and report back?
Comment 4 Franciszek Stachura 2018-02-04 20:40:06 UTC
(In reply to Dominik Haumann from comment #3)
> I am not yet convinced that this really works. Can you test again with a
> newer version at some point in time and report back?

Compiled newer (18.03.70) Kate from sources and it seems that the bug is not present in this version. Sorry for that, I should probably use something more bleeding-edge than Kubuntu.
Comment 5 Dominik Haumann 2018-02-04 21:03:31 UTC
In general this is good news - I'll close this one then for now. If you have this issue again, please reopen.