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

Wayland: A popup is sometimes destroyed before its children

    XMLWordPrintable

    Details

    • Platform/s:
      Linux/Wayland
    • Commits:
      09b6fcf3ec501cb94d89833745264a16c2a74209 (qt/qtwayland/5.12)

      Description

      Somewhat convoluted way to reproduce, will update if I find a simpler way:

      1. Open qtcreator on a wlroots-based compositor
      2. Type something that will both autocomplete and give a tooltip.
      3. Press escape to close the suggestion

      The parent (suggestion) is destroyed before the child (tooltip) leading to a protocol error.

      Jira refuses to upload the log, so heres it is filtered to show only xdg output:

      ~/d/q/b/d/qtwayland cat qtcreator-popup-error.log | ag xdg
      [927132.608] wl_registry@2.global(10, "zxdg_output_manager_v1", 2)
      [927132.618]  -> wl_registry@2.bind(10, "zxdg_output_manager_v1", 1, new id [unknown]@8)
      [927132.660] wl_registry@2.global(14, "zxdg_shell_v6", 1)
      [927132.668] wl_registry@2.global(15, "xdg_wm_base", 2)
      [927132.685] wl_registry@2.global(17, "zxdg_decoration_manager_v1", 1)
      [927132.802]  -> zxdg_output_manager_v1@8.get_xdg_output(new id zxdg_output_v1@13, wl_output@12)
      [927132.835]  -> zxdg_output_manager_v1@8.get_xdg_output(new id zxdg_output_v1@16, wl_output@15)
      [927132.867]  -> zxdg_output_manager_v1@8.get_xdg_output(new id zxdg_output_v1@19, wl_output@18)
      [927133.314] zxdg_output_v1@13.logical_position(0, 0)
      [927133.321] zxdg_output_v1@13.logical_size(1200, 1920)
      [927133.327] zxdg_output_v1@13.done()
      [927133.661] zxdg_output_v1@16.logical_position(3120, 500)
      [927133.667] zxdg_output_v1@16.logical_size(1920, 1080)
      [927133.673] zxdg_output_v1@16.done()
      [927134.098] zxdg_output_v1@19.logical_position(1200, 500)
      [927134.104] zxdg_output_v1@19.logical_size(1920, 1080)
      [927134.110] zxdg_output_v1@19.done()
      [927143.928] wl_registry@20.global(10, "zxdg_output_manager_v1", 2)
      [927143.961] wl_registry@20.global(14, "zxdg_shell_v6", 1)
      [927143.969] wl_registry@20.global(15, "xdg_wm_base", 2)
      [927143.986] wl_registry@20.global(17, "zxdg_decoration_manager_v1", 1)
      [928943.801]  -> wl_registry@2.bind(15, "xdg_wm_base", 1, new id [unknown]@28)
      [928943.849]  -> wl_registry@2.bind(17, "zxdg_decoration_manager_v1", 1, new id [unknown]@29)
      Using the 'xdg-shell' shell integration
      [928943.896]  -> xdg_wm_base@28.get_xdg_surface(new id xdg_surface@30, wl_surface@25)
      [928943.914]  -> xdg_surface@30.get_toplevel(new id xdg_toplevel@31)
      [928943.927]  -> zxdg_decoration_manager_v1@29.get_toplevel_decoration(new id zxdg_toplevel_decoration_v1@32, xdg_toplevel@31)
      [928943.939]  -> xdg_toplevel@31.set_maximized()
      [928943.945]  -> zxdg_toplevel_decoration_v1@32.unset_mode()
      [928943.953]  -> xdg_toplevel@31.set_title("Qt Creator")
      [928943.965]  -> xdg_toplevel@31.set_app_id("qtcreator")
      [928943.980]  -> zxdg_toplevel_decoration_v1@32.unset_mode()
      [928943.987]  -> xdg_toplevel@31.set_maximized()
      [928987.623] xdg_wm_base@28.ping(21642)
      [928987.630]  -> xdg_wm_base@28.pong(21642)
      [928987.640] xdg_toplevel@31.configure(0, 0, array)
      [928987.660] xdg_surface@30.configure(21641)
      [928987.676]  -> xdg_surface@30.set_window_geometry(0, 0, 956, 1015)
      [928987.687]  -> xdg_surface@30.ack_configure(21641)
      [930092.423]  -> xdg_toplevel@31.set_title("qt-dev - Qt Creator")
      [930274.901] xdg_toplevel@31.configure(1916, 907, array)
      [930274.912] xdg_surface@30.configure(21643)
      [930275.315]  -> xdg_surface@30.set_window_geometry(0, 0, 1916, 907)
      [930275.328]  -> xdg_surface@30.ack_configure(21643)
      [930383.516]  -> xdg_toplevel@31.set_title("[viewporter-12] - qt-dev - Qt Creator")
      [931117.336]  -> xdg_toplevel@31.set_title("qt-dev - Qt Creator")
      [937026.126]  -> xdg_toplevel@31.set_title("qwaylandwpviewporter.cpp (src/compositor/extensions @ qtwayland) [viewporter-12] - qt-dev - Qt Creator")
      [964212.763]  -> xdg_wm_base@28.get_xdg_surface(new id xdg_surface@17, wl_surface@42)
      [964212.775]  -> xdg_wm_base@28.create_positioner(new id xdg_positioner@24)
      [964212.783]  -> xdg_positioner@24.set_anchor_rect(860, 295, 1, 1)
      [964212.795]  -> xdg_positioner@24.set_anchor(5)
      [964212.800]  -> xdg_positioner@24.set_gravity(8)
      [964212.804]  -> xdg_positioner@24.set_size(104, 21)
      [964212.812]  -> xdg_surface@17.get_popup(new id xdg_popup@45, xdg_surface@30, xdg_positioner@24)
      [964212.824]  -> xdg_positioner@24.destroy()
      [964212.831]  -> xdg_popup@45.grab(wl_seat@10, 21672)
      [964222.358] xdg_popup@45.configure(860, 295, 104, 21)
      [964222.370] xdg_surface@17.configure(21676)
      [964222.376]  -> xdg_surface@17.ack_configure(21676)
      [964449.717]  -> xdg_wm_base@28.get_xdg_surface(new id xdg_surface@48, wl_surface@47)
      [964449.733]  -> xdg_wm_base@28.create_positioner(new id xdg_positioner@49)
      [964449.742]  -> xdg_positioner@49.set_anchor_rect(106, 1, 1, 1)
      [964449.754]  -> xdg_positioner@49.set_anchor(5)
      [964449.759]  -> xdg_positioner@49.set_gravity(8)
      [964449.764]  -> xdg_positioner@49.set_size(128, 21)
      [964449.773]  -> xdg_surface@48.get_popup(new id xdg_popup@50, xdg_surface@17, xdg_positioner@49)
      [964449.784]  -> xdg_positioner@49.destroy()
      [964453.397] xdg_popup@50.configure(106, 1, 128, 21)
      [964453.409] xdg_surface@48.configure(21681)
      [964453.415]  -> xdg_surface@48.ack_configure(21681)
      [965641.740]  -> xdg_popup@45.destroy()
      [965641.754]  -> xdg_surface@17.destroy()
      [965641.791]  -> xdg_popup@50.destroy()
      [965641.798]  -> xdg_surface@48.destroy()
      [965658.030] wl_display@1.error(xdg_wm_base@28, 2, "xdg_popup was destroyed while it was not the topmost popup")
      xdg_wm_base@28: error 2: xdg_popup was destroyed while it was not the topmost popup
      

        Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

            • Assignee:
              johanhelsing Johan Helsing
              Reporter:
              johanhelsing Johan Helsing
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Gerrit Reviews

                There are no open Gerrit changes