Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-119110

There are potential crash issues when some submenus are expanded.

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P1: Critical
    • 6.6.2, 6.7.0 FF
    • 6.6.0
    • QPA: Wayland
    • None
    • OS: Archlinux 6.6.1-zen1-1-zen
      WM: Wayfire or Hyprland
    • Linux/Wayland
    • cfaae5d91 (dev), aae65c885 (6.6)

    Description

      qBittorrent crash:

      reproduce:

      • Left-click on View to open the menu.
      • Hover the mouse over 'Lock qBittorrent' to expand the sub-menu.
      • Keep the sub-menu open, move the mouse to the top menu bar, and the program crashes.

      Video

      log:

      qt.qpa.wayland: setGrabPopup called with a parent, QtWaylandClient::QWaylandXdgSurface(0x555dc242c570) which does not match the current topmost grabbing popup, QtWaylandClient::QWaylandXdgSurface(0x555dc26c7f90) According to the xdg-shell protocol, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly because xdg-shell mandate that child popups close before parents
      xdg_wm_base@3: error 2: xdg_popup was destroyed while it was not the topmost popup
      The Wayland connection experienced a fatal error: Protocol error 
       0# getStacktrace[abi:cxx11]() in qbittorrent
       1# 0x0000555DC0F9AE17 in qbittorrent
       2# 0x00007FBF5E25C710 in /usr/lib/libc.so.6
       3# QtWaylandClient::QWaylandXdgSurface::setGrabPopup(QtWaylandClient::QWaylandWindow*, QtWaylandClient::QWaylandInputDevice*, int) in /usr/lib/qt6/plugins/wayland-shell-integration/libxdg-shell.so
       4# QtWaylandClient::QWaylandXdgSurface::QWaylandXdgSurface(QtWaylandClient::QWaylandXdgShell*, xdg_surface*, QtWaylandClient::QWaylandWindow*) in /usr/lib/qt6/plugins/wayland-shell-integration/libxdg-shell.so
       5# QtWaylandClient::QWaylandXdgShellIntegration::createShellSurface(QtWaylandClient::QWaylandWindow*) in /usr/lib/qt6/plugins/wayland-shell-integration/libxdg-shell.so
       6# QtWaylandClient::QWaylandWindow::initWindow() in /usr/lib/qt6/plugins/platforms/../../../libQt6WaylandClient.so.6
       7# QtWaylandClient::QWaylandWindow::setVisible(bool) in /usr/lib/qt6/plugins/platforms/../../../libQt6WaylandClient.so.6
       8# QWidgetPrivate::show_sys() in /usr/lib/libQt6Widgets.so.6
       9# QWidgetPrivate::show_helper() in /usr/lib/libQt6Widgets.so.6
      10# QWidgetPrivate::setVisible(bool) in /usr/lib/libQt6Widgets.so.6
      11# 0x00007FBF60730D0B in /usr/lib/libQt6Widgets.so.6
      12# QMenu::popup(QPoint const&, QAction*) in /usr/lib/libQt6Widgets.so.6
      13# 0x00007FBF607390EC in /usr/lib/libQt6Widgets.so.6
      14# 0x00007FBF607395E0 in /usr/lib/libQt6Widgets.so.6
      15# QWidget::event(QEvent*) in /usr/lib/libQt6Widgets.so.6
      16# QApplicationPrivate::notify_helper(QObject*, QEvent*) in /usr/lib/libQt6Widgets.so.6
      17# QApplication::notify(QObject*, QEvent*) in /usr/lib/libQt6Widgets.so.6
      18# QCoreApplication::notifyInternal2(QObject*, QEvent*) in /usr/lib/libQt6Core.so.6
      19# 0x00007FBF6072F753 in /usr/lib/libQt6Widgets.so.6
      20# QMenu::mouseMoveEvent(QMouseEvent*) in /usr/lib/libQt6Widgets.so.6
      21# QWidget::event(QEvent*) in /usr/lib/libQt6Widgets.so.6
      22# QApplicationPrivate::notify_helper(QObject*, QEvent*) in /usr/lib/libQt6Widgets.so.6
      23# QApplication::notify(QObject*, QEvent*) in /usr/lib/libQt6Widgets.so.6
      24# QCoreApplication::notifyInternal2(QObject*, QEvent*) in /usr/lib/libQt6Core.so.6
      25# QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) in /usr/lib/libQt6Widgets.so.6
      26# 0x00007FBF605D6EC6 in /usr/lib/libQt6Widgets.so.6
      27# 0x00007FBF605D7CC0 in /usr/lib/libQt6Widgets.so.6
      28# QApplicationPrivate::notify_helper(QObject*, QEvent*) in /usr/lib/libQt6Widgets.so.6
      29# QCoreApplication::notifyInternal2(QObject*, QEvent*) in /usr/lib/libQt6Core.so.6
      30# QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) in /usr/lib/libQt6Gui.so.6
      31# QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) in /usr/lib/libQt6Gui.so.6
      32# 0x00007FBF5FFE5D84 in /usr/lib/libQt6Gui.so.6
      33# 0x00007FBF5DFE8F69 in /usr/lib/libglib-2.0.so.0
      34# 0x00007FBF5E047327 in /usr/lib/libglib-2.0.so.0
      35# g_main_context_iteration in /usr/lib/libglib-2.0.so.0
      36# QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) in /usr/lib/libQt6Core.so.6
      37# QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) in /usr/lib/libQt6Core.so.6
      38# QCoreApplication::exec() in /usr/lib/libQt6Core.so.6
      39# Application::exec() in qbittorrent
      40# main in qbittorrent
      41# 0x00007FBF5E245CD0 in /usr/lib/libc.so.6
      42# __libc_start_main in /usr/lib/libc.so.6
      43# _start in qbittorrent 

       

      The related issue:

      https://github.com/qbittorrent/qBittorrent/issues/19896

      telegram-desktop crash:

      reproduce:

      • Open the menu by right-clicking in the input box.
      • Hover the mouse over 'Formatting' or 'Spelling' to expand the sub-menu.
      • Keep the sub-menu open, move the mouse to the input box and left-click, then the program crashes.

      Video

      log:

      qt.qpa.wayland: setGrabPopup called with a parent, QtWaylandClient::QWaylandXdgSurface(0x7f5d2d62bb60) which does not match the current topmost grabbing popup, QtWaylandClient::QWaylandXdgSurface(0x7f5cd16b4640) According to the xdg-shell protocol, this is not allowed. The wayland QPA plugin is currently handling it by setting the parent to the topmost grabbing popup. Note, however, that this may cause positioning errors and popups closing unxpectedly because xdg-shell mandate that child popups close before parents
      xdg_wm_base@3: error 2: xdg_popup was destroyed while it was not the topmost popup
      qt.qpa.wayland: Could not create EGL surface (EGL error 0x3000)The Wayland connection experienced a fatal error: Protocol error
       

      The related issue:

      https://github.com/telegramdesktop/tdesktop/issues/26887

      Additional context:

      • Testing qBittorrent under QT 6.5.2, it seems that this issue does not occur.
      • This issue is reproducible in both Wayfire and Hyprland.

      Attachments

        1. telegram.mp4
          10.26 MB
          Hoream Xiao
        2. qbittorrent.mp4
          10.99 MB
          Hoream Xiao

        Issue Links

          For Gerrit Dashboard: QTBUG-119110
          # Subject Branch Project Status CR V

          Activity

            People

              davidedmundson David Edmundson
              hoream Hoream Xiao
              Votes:
              2 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There is 1 open Gerrit change