Bug 471791 - Crash in QtWaylandClient::QWaylandXdgSurface::setGrabPopup during quick open
Summary: Crash in QtWaylandClient::QWaylandXdgSurface::setGrabPopup during quick open
Status: RESOLVED FIXED
Alias: None
Product: kate
Classification: Applications
Component: application (show other bugs)
Version: Git
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: KWrite Developers
URL:
Keywords: qt6, wayland-only
Depends on:
Blocks:
 
Reported: 2023-06-30 10:25 UTC by Nicolas Fella
Modified: 2023-11-20 09:54 UTC (History)
4 users (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 Nicolas Fella 2023-06-30 10:25:11 UTC
STEPS TO REPRODUCE
1. invoke quick open via Ctrl+Alt+O shortcut

OBSERVED RESULT
Sometimes Kate crashes

SOFTWARE/OS VERSIONS
KDE Plasma Version: master
KDE Frameworks Version: master
Qt Version: 6.5.1

ADDITIONAL INFORMATION

#5  0x00007f5ed456e887 in QtWaylandClient::QWaylandXdgSurface::setGrabPopup(QtWaylandClient::QWaylandWindow*, QtWaylandClient::QWaylandInputDevice*, int) (this=this@entry=0xc0a24e0, parent=parent@entry=0x2845900, device=0x10de690, serial=174286) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp:509
#6  0x00007f5ed456eaa9 in QtWaylandClient::QWaylandXdgSurface::QWaylandXdgSurface(QtWaylandClient::QWaylandXdgShell*, xdg_surface*, QtWaylandClient::QWaylandWindow*) (this=0xc0a24e0, shell=<optimized out>, surface=<optimized out>, window=<optimized out>, this=<optimized out>, shell=<optimized out>, surface=<optimized out>, window=<optimized out>) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/redhat-linux-build/include/QtWaylandClient/6.5.1/QtWaylandClient/private/../../../../../../src/client/qwaylanddisplay_p.h:181
#7  0x00007f5ed456eff5 in QtWaylandClient::QWaylandXdgShell::getXdgSurface(QtWaylandClient::QWaylandWindow*) (this=0x10e2f30, window=0xcf90130) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/redhat-linux-build/src/plugins/shellintegration/xdg-shell/wayland-xdg-shell-client-protocol.h:531
#8  0x00007f5ed67ae1e5 in QtWaylandClient::QWaylandWindow::initWindow() (this=0xcf90130) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/src/client/qwaylandwindow.cpp:138
#9  0x00007f5ed67b3b45 in QtWaylandClient::QWaylandWindow::setVisible(bool) (visible=<optimized out>, this=0xcf90130) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/src/client/qwaylandwindow.cpp:504
#10 QtWaylandClient::QWaylandWindow::setVisible(bool) (this=0xcf90130, visible=<optimized out>) at /usr/src/debug/qt6-qtwayland-6.5.1-1.fc38.x86_64/src/client/qwaylandwindow.cpp:496
#11 0x00007f5ed9e10ee7 in QWidgetPrivate::show_sys() () at /lib64/libQt6Widgets.so.6
#12 0x00007f5ed9e1a1e5 in QWidgetPrivate::show_helper() () at /lib64/libQt6Widgets.so.6
#13 0x00007f5ed9e1d355 in QWidgetPrivate::setVisible(bool) () at /lib64/libQt6Widgets.so.6
#14 0x00007f5edb8759b3 in KateQuickOpen::updateState() (this=0x7fff243e8e20) at /home/nico/kde6/src/kate/apps/lib/quickopen/katequickopen.cpp:383
#15 KateQuickOpen::KateQuickOpen(KateMainWindow*) (this=0x7fff243e8e20, mainWindow=<optimized out>) at /home/nico/kde6/src/kate/apps/lib/quickopen/katequickopen.cpp:336
#16 0x00007f5edb899007 in KateMainWindow::slotQuickOpen() (this=0x1a33eb0) at /home/nico/kde6/src/kate/apps/lib/katemainwindow.cpp:1483
#17 0x00007f5ed89ddcd4 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7fff243e8f90, r=0x1a33eb0, this=0x1c34470) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobjectdefs_impl.h:363
#18 doActivate<false>(QObject*, int, void**) (sender=0x1bdd590, signal_index=7, argv=0x7fff243e8f90) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qobject.cpp:3992
#19 0x00007f5ed96195a4 in QAction::triggered(bool) () at /lib64/libQt6Gui.so.6
#20 0x00007f5ed961c6eb in QAction::activate(QAction::ActionEvent) () at /lib64/libQt6Gui.so.6
#21 0x00007f5ed961d762 in QAction::event(QEvent*) () at /lib64/libQt6Gui.so.6
#22 0x00007f5ed9dc0b08 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt6Widgets.so.6
#23 0x00007f5ed897c308 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x1bdd590, event=0x7fff243e91f0) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qcoreapplication.cpp:1115
#24 0x00007f5ed962f43e in QShortcutMap::dispatchEvent(QKeyEvent*) () at /lib64/libQt6Gui.so.6
#25 0x00007f5ed962ff0f in QShortcutMap::tryShortcut(QKeyEvent*) () at /lib64/libQt6Gui.so.6
#26 0x00007f5ed92677c2 in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) () at /lib64/libQt6Gui.so.6
#27 0x00007f5ed920508a in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) () at /lib64/libQt6Gui.so.6
#28 0x00007f5ed926339c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQt6Gui.so.6
#29 0x00007f5ed9743964 in userEventSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQt6Gui.so.6
#30 0x00007f5ed77b039c in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#31 0x00007f5ed780e438 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#32 0x00007f5ed77ada23 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#33 0x00007f5ed8c1ff7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x10c76d0, flags=...) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:393
#34 0x00007f5ed8988e93 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff243e96e0, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:34
#35 0x00007f5ed8984b3d in QCoreApplication::exec() () at /usr/src/debug/qt6-qtbase-6.5.1-1.fc38.x86_64/src/corelib/global/qflags.h:74
#36 0x0000000000409929 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /home/nico/kde6/src/kate/apps/kate/main.cpp:609
Comment 1 Christoph Cullmann 2023-07-01 14:32:26 UTC
Hmmm, not nice, but so far can't reproduce myself.
Comment 2 Christoph Cullmann 2023-07-02 14:19:22 UTC
Can you reproduce it? Does it help if one would e.g. trigger updateState with some single shot?
Comment 3 Nicolas Fella 2023-07-02 19:55:01 UTC
Not reliably. Something like this happens regularly (like 1 in 50 times) opening the quick open thing. Most of the time Kate closes without creating a coredump, I think because it's terminated because of a Wayland protocol error
Comment 4 Christoph Cullmann 2023-07-02 20:45:56 UTC
For me it so far happens never.
If you can at least get it sometimes to crash, could you try if a singleShot might remove that for you?
Comment 5 David Edmundson 2023-09-18 08:24:15 UTC
Upstream link: https://bugreports.qt.io/browse/QTBUG-117015
Comment 6 Christoph Cullmann 2023-09-24 18:33:31 UTC
Thanks for creating a Qt bug for this!
Comment 7 Waqar Ahmed 2023-11-20 09:54:57 UTC
Should be fixed after https://invent.kde.org/utilities/kate/-/merge_requests/1355