https://bugs.kde.org/show_bug.cgi?id=459612

            Bug ID: 459612
           Summary: Kate crashes when using navigation bar with keyboard
                    and LSP
    Classification: Applications
           Product: kate
           Version: 22.08.1
          Platform: Neon
                OS: Linux
            Status: REPORTED
          Keywords: drkonqi
          Severity: crash
          Priority: NOR
         Component: general
          Assignee: kwrite-bugs-n...@kde.org
          Reporter: maty78...@gmail.com
  Target Milestone: ---

Application: kate (22.08.1)

Qt Version: 5.15.6
Frameworks Version: 5.98.0
Operating System: Linux 5.13.0-39-generic x86_64
Windowing System: X11
Distribution: KDE neon User - 5.25
DrKonqi: 5.25.5 [KCrashBackend]

-- Information about the crash:
When using LSP server, switching file through navigation bar with keyboard may
crash the Kate.
Tested with rust-analyzer, but I believe the issue will show up with other LSP
servers too.

It occurs just about 80% of the time

STEPS TO REPRODUCE
Below is how I successfully reproduced the crash, but some of the steps
probably aren't needed.

 1. Install rust-analyzer and make sure it correctly works with Kate LSP plugin
 2. Create two files in a same directory named file1.rs and file2.rs, both with
content `fn aa() {}`
 3. Check in Settings -> Configure keyboard shortcuts, that action `Focus
navigation bar` has assigned shortcut Ctrl+Shift+N
 4. Close Kate
 5. Open `file1.rs` in Kate
 6. Make sure navigation bar is shown
 7. Wait, until LSP server shows `aa[fn()]` as the last item in navigation bar.
Without that, crash will most likely won't happen. Sometimes, it's needed to
reload the document (F5) to show it.
 8. Press Ctrl+Shift+N to focus the navigation bar
 9. Press left arrow and select `file2.rs` by pressing arrow down
 10. Open file2.rs by pressing Enter
 11. Kate may now crash

The crash can be reproduced sometimes.

-- Backtrace:
Application: Kate (kate), signal: Segmentation fault

[New LWP 30472]
[New LWP 30476]
[New LWP 30477]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007f09d02f899f in __GI___poll (fds=0x7ffc1a28cab8, nfds=1, timeout=1000) at
../sysdeps/unix/sysv/linux/poll.c:29
__preamble__
[Current thread is 1 (Thread 0x7f09cb5199c0 (LWP 30471))]

Thread 4 (Thread 0x7f09b7fff700 (LWP 30477)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0,
futex_word=0x560bb34c5e70) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x560bb34c5e20,
cond=0x560bb34c5e48) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x560bb34c5e48, mutex=0x560bb34c5e20) at
pthread_cond_wait.c:647
#3  0x00007f09d068e5eb in QWaitConditionPrivate::wait (deadline=...,
this=0x560bb34c5e20) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=this@entry=0x560bb2d60a58,
mutex=mutex@entry=0x560bb2d60a50, deadline=...) at
thread/qwaitcondition_unix.cpp:225
#5  0x00007f09d175c35a in QFileInfoGatherer::run (this=0x560bb2d60a40) at
../../include/QtCore/../../src/corelib/kernel/qdeadlinetimer.h:68
#6  0x00007f09d0688543 in QThreadPrivate::start (arg=0x560bb2d60a40) at
thread/qthread_unix.cpp:330
#7  0x00007f09cf07e609 in start_thread (arg=<optimized out>) at
pthread_create.c:477
#8  0x00007f09d0305133 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f09c0af8700 (LWP 30476)):
#0  futex_wait_cancelable (private=<optimized out>, expected=0,
futex_word=0x560bb34c1090) at ../sysdeps/nptl/futex-internal.h:183
#1  __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x560bb34c1040,
cond=0x560bb34c1068) at pthread_cond_wait.c:508
#2  __pthread_cond_wait (cond=0x560bb34c1068, mutex=0x560bb34c1040) at
pthread_cond_wait.c:647
#3  0x00007f09d068e5eb in QWaitConditionPrivate::wait (deadline=...,
this=0x560bb34c1040) at thread/qwaitcondition_unix.cpp:146
#4  QWaitCondition::wait (this=this@entry=0x560bb2ed2c68,
mutex=mutex@entry=0x560bb2ed2c60, deadline=...) at
thread/qwaitcondition_unix.cpp:225
#5  0x00007f09d175c35a in QFileInfoGatherer::run (this=0x560bb2ed2c50) at
../../include/QtCore/../../src/corelib/kernel/qdeadlinetimer.h:68
#6  0x00007f09d0688543 in QThreadPrivate::start (arg=0x560bb2ed2c50) at
thread/qthread_unix.cpp:330
#7  0x00007f09cf07e609 in start_thread (arg=<optimized out>) at
pthread_create.c:477
#8  0x00007f09d0305133 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f09ca9a3700 (LWP 30472)):
#0  0x00007f09d02f8a96 in __ppoll (fds=fds@entry=0x7f09c4011d78,
nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0,
sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:44
#1  0x00007f09d08c5a89 in ppoll (__ss=<optimized out>, __timeout=<optimized
out>, __nfds=<optimized out>, __fds=<optimized out>) at
/usr/include/x86_64-linux-gnu/bits/poll2.h:77
#2  qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7f09c4011d78) at
kernel/qcore_unix.cpp:132
#3  qt_ppoll (timeout_ts=0x0, nfds=1, fds=0x7f09c4011d78) at
kernel/qcore_unix.cpp:129
#4  qt_safe_poll (fds=0x7f09c4011d78, nfds=1, timeout_ts=timeout_ts@entry=0x0)
at kernel/qcore_unix.cpp:155
#5  0x00007f09d08c7143 in QEventDispatcherUNIX::processEvents (this=<optimized
out>, flags=...) at
../../include/QtCore/../../src/corelib/tools/qarraydata.h:212
#6  0x00007f09d086db3b in QEventLoop::exec (this=this@entry=0x7f09ca9a2bb0,
flags=..., flags@entry=...) at
../../include/QtCore/../../src/corelib/global/qflags.h:141
#7  0x00007f09d0687342 in QThread::exec (this=<optimized out>) at
../../include/QtCore/../../src/corelib/global/qflags.h:121
#8  0x00007f09d1a7ff4b in ?? () from /lib/x86_64-linux-gnu/libQt5DBus.so.5
#9  0x00007f09d0688543 in QThreadPrivate::start (arg=0x7f09d1b03d80) at
thread/qthread_unix.cpp:330
#10 0x00007f09cf07e609 in start_thread (arg=<optimized out>) at
pthread_create.c:477
#11 0x00007f09d0305133 in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f09cb5199c0 (LWP 30471)):
[KCrash Handler]
#4  QStandardItemPrivate::childIndex (column=0, row=8, this=0x0) at
../../include/QtGui/5.15.6/QtGui/private/../../../../../src/gui/itemmodels/qstandarditemmodel_p.h:166
#5  QStandardItem::child (this=0x560bb3dd9170, row=8, column=0) at
itemmodels/qstandarditemmodel.cpp:1884
#6  0x00007f09d11fd4f5 in QStandardItemModelPrivate::itemFromIndex (index=...,
this=<optimized out>) at
../../include/QtCore/../../src/corelib/itemmodels/qabstractitemmodel.h:63
#7  QStandardItemModel::data (this=<optimized out>, index=..., role=257) at
itemmodels/qstandarditemmodel.cpp:2837
#8  0x00007f09d1d77115 in QModelIndex::data (arole=257, this=0x7ffc1a28db30) at
/usr/include/x86_64-linux-gnu/qt5/QtCore/qabstractitemmodel.h:460
#9  BreadCrumbView::onClicked (this=0x560bb36d5fa0, idx=...) at
./apps/lib/kateurlbar.cpp:811
#10 0x00007f09d08a62f2 in QtPrivate::QSlotObjectBase::call (a=0x7ffc1a28db00,
r=0x560bb36d5fa0, this=0x560bb2dd5cd0) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#11 doActivate<false> (sender=0x560bb36d5fa0, signal_index=8,
argv=0x7ffc1a28db00) at kernel/qobject.cpp:3919
#12 0x00007f09d089f587 in QMetaObject::activate
(sender=sender@entry=0x560bb36d5fa0, m=m@entry=0x7f09d1a53c00
<QAbstractItemView::staticMetaObject>,
local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x7ffc1a28db00)
at kernel/qobject.cpp:3979
#13 0x00007f09d1792899 in QAbstractItemView::clicked
(this=this@entry=0x560bb36d5fa0, _t1=...) at .moc/moc_qabstractitemview.cpp:654
#14 0x00007f09d1d706a1 in BreadCrumbView::openLastIndex (this=0x560bb36d5fa0)
at ./apps/lib/kateurlbar.cpp:843
#15 UrlbarContainer::open (this=<optimized out>) at
./apps/lib/kateurlbar.cpp:1010
#16 KateUrlBar::open (this=0x560bb2e7fec0) at ./apps/lib/kateurlbar.cpp:1131
#17 0x00007f09d08a62f2 in QtPrivate::QSlotObjectBase::call (a=0x7ffc1a28dcb0,
r=0x560bb2fed970, this=0x560bb2d49a60) at
../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#18 doActivate<false> (sender=0x560bb2e332d0, signal_index=4,
argv=0x7ffc1a28dcb0) at kernel/qobject.cpp:3919
#19 0x00007f09d089f587 in QMetaObject::activate
(sender=sender@entry=0x560bb2e332d0, m=m@entry=0x7f09d1a351a0
<QAction::staticMetaObject>, local_signal_index=local_signal_index@entry=1,
argv=argv@entry=0x7ffc1a28dcb0) at kernel/qobject.cpp:3979
#20 0x00007f09d1519986 in QAction::triggered (this=this@entry=0x560bb2e332d0,
_t1=<optimized out>) at .moc/moc_qaction.cpp:376
#21 0x00007f09d151c038 in QAction::activate (this=0x560bb2e332d0,
event=<optimized out>) at kernel/qaction.cpp:1161
#22 0x00007f09d151c94f in QAction::event (e=<optimized out>, this=<optimized
out>) at kernel/qaction.cpp:1086
#23 QAction::event (this=<optimized out>, e=<optimized out>) at
kernel/qaction.cpp:1075
#24 0x00007f09d151fe43 in QApplicationPrivate::notify_helper (this=<optimized
out>, receiver=0x560bb2e332d0, e=0x7ffc1a28e030) at
kernel/qapplication.cpp:3637
#25 0x00007f09d1528c58 in QApplication::notify(QObject*, QEvent*) () at
kernel/qapplication.cpp:3161
#26 0x00007f09d086f03a in QCoreApplication::notifyInternal2
(receiver=0x560bb2e332d0, event=0x7ffc1a28e030) at
../../include/QtCore/5.15.6/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:332
#27 0x00007f09d0e4f3e3 in QShortcutMap::dispatchEvent
(this=this@entry=0x560bb298e908, e=e@entry=0x7ffc1a28e0f0) at
kernel/qshortcutmap.cpp:675
#28 0x00007f09d0e4fd83 in QShortcutMap::tryShortcut
(this=this@entry=0x560bb298e908, e=e@entry=0x7ffc1a28e0f0) at
kernel/qshortcutmap.cpp:343
#29 0x00007f09d0dfbb82 in QWindowSystemInterface::handleShortcutEvent
(window=<optimized out>, window@entry=0x560bb2e9c750, timestamp=9331401,
keyCode=78, modifiers=..., nativeScanCode=57, nativeVirtualKey=78,
nativeModifiers=21, text=..., autorepeat=false, count=1) at
kernel/qwindowsysteminterface.cpp:477
#30 0x00007f09d0e1cb91 in QGuiApplicationPrivate::processKeyEvent
(e=e@entry=0x560bb2f8caf0) at kernel/qguiapplication.cpp:2398
#31 0x00007f09d0e21e4b in QGuiApplicationPrivate::processWindowSystemEvent
(e=0x560bb2f8caf0) at kernel/qguiapplication.cpp:2011
#32 0x00007f09d0df86bc in QWindowSystemInterface::sendWindowSystemEvents
(flags=...) at kernel/qwindowsysteminterface.cpp:1169
#33 0x00007f09cb0dd207 in QXcbUnixEventDispatcher::processEvents
(this=0x560bb2a47c70, flags=...) at qxcbeventdispatcher.cpp:63
#34 0x00007f09d086db3b in QEventLoop::exec (this=this@entry=0x7ffc1a28e360,
flags=..., flags@entry=...) at
../../include/QtCore/../../src/corelib/global/qflags.h:141
#35 0x00007f09d0875ce4 in QCoreApplication::exec () at
../../include/QtCore/../../src/corelib/global/qflags.h:121
#36 0x0000560bb0d96d43 in main (argc=<optimized out>, argv=<optimized out>) at
./apps/kate/main.cpp:607
[Inferior 1 (process 30471) detached]

Reported using DrKonqi

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to