Race condition with xdg_popups and EGL
The origin issue is reported in Multi instances of one application cause cairo-dock to be hanging
And the fixed #8136 (closed) seems to be related to the problem.
The origin backtrace from cairo-dock:
#0 0x00007ffff7178f6f in __GI___poll (fds=fds@entry=0x7fffffffa6c0, nfds=nfds@entry=0x1, timeout=timeout@entry=0xffffffff) at ../sysdeps/unix/sysv/linux/poll.c:29
#1 0x00007ffff614cb5e in poll (__timeout=0xffffffff, __nfds=0x1, __fds=0x7fffffffa6c0) at /usr/include/bits/poll2.h:39
#2 wl_display_poll (display=0x5555555b1ad0, events=0x1) at ../wayland-1.22.0/src/wayland-client.c:1914
#3 wl_display_dispatch_queue (queue=<optimized out>, display=<optimized out>) at ../wayland-1.22.0/src/wayland-client.c:1987
#4 wl_display_dispatch_queue (display=0x5555555b1ad0, queue=0x555555adbe80) at ../wayland-1.22.0/src/wayland-client.c:1960
#5 0x00007ffff071fe65 in dri2_wl_swap_buffers_with_damage () at ../mesa-23.3.3/src/egl/drivers/dri2/platform_wayland.c:1576
#6 0x00007ffff0710938 in dri2_swap_buffers () at ../mesa-23.3.3/src/egl/drivers/dri2/egl_dri2.c:1958
#7 0x00007ffff070800d in eglSwapBuffers () at ../mesa-23.3.3/src/egl/main/eglapi.c:1443
#8 0x00007ffff72a7aac in _on_expose (pWidget=pWidget@entry=0x555555b31aa0 [GtkWindow], pCairoContext=<optimized out>, pDock=0x555555bcf490)
at /usr/src/debug/cairo-dock-core-wayland-git/cairo-dock-core-wayland-git/src/gldit/cairo-dock-dock-factory.c:114
#9 0x00007ffff74c56cd in _gtk_marshal_BOOLEAN__BOXED
(closure=0x5555559965d0, return_value=0x7fffffffaa20, param_values=0x7fffffffaab0, marshal_data=<optimized out>, invocation_hint=<optimized out>, n_param_values=<optimized out>)
at gtk/gtkmarshalers.c:84
#10 0x00007ffff776f3c3 in _gtk_marshal_BOOLEAN__BOXED
(marshal_data=0x0, invocation_hint=<optimized out>, param_values=0x7fffffffaab0, n_param_values=0x2, return_value=0x7fffffffaa20, closure=0x5555559965d0) at gtk/gtkmarshalers.c:70
#11 gtk_widget_draw_marshaller (closure=0x5555559965d0, return_value=0x7fffffffaa20, n_param_values=0x2, param_values=0x7fffffffaab0, invocation_hint=<optimized out>, marshal_data=0x0)
at ../gtk/gtk/gtkwidget.c:951
#12 0x00007ffff7eda6c0 in g_closure_invoke (closure=0x5555559965d0, return_value=0x7fffffffaa20, n_param_values=0x2, param_values=0x7fffffffaab0, invocation_hint=0x7fffffffaa00)
at ../glib/gobject/gclosure.c:832
#13 0x00007ffff7f08a36 in signal_emit_unlocked_R.isra.0
(node=node@entry=0x7fffffffaba0, detail=detail@entry=0x0, instance=instance@entry=0x555555b31aa0, emission_return=emission_return@entry=0x7fffffffac20, instance_and_params=instance_and_pa
rams@entry=0x7fffffffaab0) at ../glib/gobject/gsignal.c:3980
#14 0x00007ffff7ef9335 in signal_emit_valist_unlocked
(instance=instance@entry=0x555555b31aa0, signal_id=signal_id@entry=0x46, detail=detail@entry=0x0, var_args=var_args@entry=0x7fffffffad00) at ../glib/gobject/gsignal.c:3625
#15 0x00007ffff7ef9c77 in g_signal_emit_valist (instance=0x555555b31aa0, signal_id=0x46, detail=0x0, var_args=var_args@entry=0x7fffffffad00) at ../glib/gobject/gsignal.c:3355
#16 0x00007ffff7ef9d34 in g_signal_emit (instance=instance@entry=0x555555b31aa0, signal_id=<optimized out>, detail=detail@entry=0x0) at ../glib/gobject/gsignal.c:3675
#17 0x00007ffff7781ae3 in gtk_widget_draw_internal (widget=0x555555b31aa0 [GtkWindow], cr=0x555555b18d00, clip_to_size=<optimized out>) at ../gtk/gtk/gtkwidget.c:7077
#18 0x00007ffff778c862 in gtk_widget_render (widget=0x555555b31aa0 [GtkWindow], window=<optimized out>, region=<optimized out>) at ../gtk/gtk/gtkwidget.c:17610
#19 0x00007ffff7628c8b in gtk_main_do_event (event=0x7fffffffaf60) at ../gtk/gtk/gtkmain.c:1844
#20 gtk_main_do_event (event=<optimized out>) at ../gtk/gtk/gtkmain.c:1691
#21 0x00007ffff7370b77 in _gdk_event_emit (event=0x7fffffffaf60) at ../gtk/gdk/gdkevents.c:73
#22 _gdk_event_emit (event=0x7fffffffaf60) at ../gtk/gdk/gdkevents.c:67
#23 0x00007ffff7382b02 in _gdk_window_process_updates_recurse_helper (window=0x555555b18b60 [GdkWaylandWindow], expose_region=<optimized out>) at ../gtk/gdk/gdkwindow.c:3874
#24 0x00007ffff7387158 in gdk_window_process_updates_internal (window=0x555555b18b60 [GdkWaylandWindow]) at ../gtk/gdk/gdkwindow.c:4020
#25 0x00007ffff7387375 in gdk_window_process_updates_with_mode (recurse_mode=<optimized out>, window=<optimized out>) at ../gtk/gdk/gdkwindow.c:4215
At last, we find the problem is located in mesa, which doesn't expect that a popup can be closed at any time.
Here is a minimal test example which demonstrates the issue. There is the detailed information in its README.