UI process hang when using URL bar after opening new tab
We have a recent regression somewhere causing a UI process hang in the following condition:
- Open a new tab with Ctrl+T
- Quickly jump to the address bar using Ctrl+L
- Start typing additional characters
The bug is timing-dependent and does not occur consistently, but I can reproduce once every few attempts. I connected to a hung Epiphany using host gdb (this is why there's no good debuginfo) and found that it's permanently rendering widgets:
(gdb) bt
#0 0x00007fae8eb0c0cd in poll () from target:/usr/lib/x86_64-linux-gnu/libc.so.6
#1 0x00007fae87edeeb4 in wl_display_poll () from target:/usr/lib/x86_64-linux-gnu/libwayland-client.so.0
#2 0x00007fae87edefa2 in wl_display_dispatch_queue () from target:/usr/lib/x86_64-linux-gnu/libwayland-client.so.0
#3 0x00007fae8057de23 in dri2_wl_swap_buffers_with_damage ()
from target:/usr/lib/x86_64-linux-gnu/GL/default/lib/libEGL_mesa.so.0
#4 0x00007fae80572bb1 in dri2_swap_buffers_with_damage ()
from target:/usr/lib/x86_64-linux-gnu/GL/default/lib/libEGL_mesa.so.0
#5 0x00007fae80562dfa in _eglSwapBuffersWithDamageCommon ()
from target:/usr/lib/x86_64-linux-gnu/GL/default/lib/libEGL_mesa.so.0
#6 0x00007fae8f24e5a5 in gdk_gl_context_real_end_frame () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#7 0x00007fae8f278470 in gdk_wayland_gl_context_end_frame () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#8 0x00007fae8f241fc2 in gdk_draw_context_end_frame () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#9 0x00007fae8f2d0009 in gsk_gl_renderer_render () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#10 0x00007fae8f2b3812 in gsk_renderer_render () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#11 0x00007fae8f0acf0f in gtk_widget_render () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#12 0x00007fae8efed409 in surface_render () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#13 0x00007fae8f22e057 in _gdk_marshal_BOOLEAN__BOXEDv () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#14 0x00007fae8fab165a in _g_closure_invoke_va () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#15 0x00007fae8facb97e in g_signal_emit_valist () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#16 0x00007fae8facc743 in g_signal_emit () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#17 0x00007fae8f25b572 in gdk_surface_paint_on_clock () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#18 0x00007fae8fab1442 in g_closure_invoke () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#19 0x00007fae8fac55c8 in signal_emit_unlocked_R.isra.0 () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#20 0x00007fae8facc575 in g_signal_emit_valist () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#21 0x00007fae8facc743 in g_signal_emit () from target:/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#22 0x00007fae8f24a38d in _gdk_frame_clock_emit_paint () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#23 0x00007fae8f24affe in gdk_frame_clock_paint_idle () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#24 0x00007fae8f24b0c4 in gdk_frame_clock_flush_idle () from target:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#25 0x00007fae8f9aca4f in g_timeout_dispatch () from target:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007fae8f9abd49 in g_main_context_dispatch () from target:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007fae8f9ac2a8 in g_main_context_iterate.constprop () from target:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007fae8f9ac343 in g_main_context_iteration () from target:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007fae8f84d38d in g_application_run () from target:/usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#30 0x00005613bec340ea in main ()
Still in the exact same place if I continue for a few seconds and take another backtrace. So, that's weird. I don't even know where to begin with this one.