GSK Vulkan renderer doesn't work on RDP session on headless VM
Steps to reproduce
- Run a default GNOME 47 beta RDP session (which will try to use Vulkan)
- Open a GTK4 app
- App gets frozen and shows "force quit"
Current behavior
This a headless VM, when I connect through RDP every GTK4 app freezes and shows a "App is not responding... Force quit | Wait" dialog.
It was working flawlessly with GNOME 46 and in fact, does work flawlessly if I set GSK_RENDERER=ngl in /etc/environment
Expected outcome
Apps to not freeze using the Vulkan renderer
Version information
- GTK 4.15.4
- Fedora Workstation 41, GNOME 47.beta
- Mesa 24.2.0rc3, but happened with 24.1 stable too.
Additional information
Through a SSH shell I managed to get a simple backtrace from the Calculator app itself (well, because it was a simpler app but as said happens on every GTK4 app that relies on the system's GTK libraries [some flatpak apps use an older GTK4 without Vulkan renderer)
#0 __GI___ioctl (fd=222, request=3224397002) at ../sysdeps/unix/sysv/linux/ioctl.c:36 0x00007f416542cfb0 in drmIoctl () at /lib64/libdrm.so.2 0x00007f416543172a in drmSyncobjTimelineWait () at /lib64/libdrm.so.2 0x00007f413ec495e4 in wsi_drm_wait_for_explicit_sync_release () at /usr/lib64/libvulkan_intel.so 0x00007f413ec4f0a7 in wsi_wl_swapchain_acquire_next_image_explicit () at /usr/lib64/libvulkan_intel.so 0x00007f413ec462c6 in wsi_common_acquire_next_image2 () at /usr/lib64/libvulkan_intel.so 0x00007f413ea6295c in anv_AcquireNextImage2KHR () at /usr/lib64/libvulkan_intel.so 0x00007f413ec46273 in wsi_AcquireNextImageKHR () at /usr/lib64/libvulkan_intel.so 0x00007f4178bff89e in gdk_vulkan_context_begin_frame (draw_context=0x55f5c12693b0 [GdkWaylandVulkanContext], depth=, region=0x55f5c1578560, out_color_state=0x55f5c1269398, out_depth=0x55f5c12693a0) at ../gdk/gdkvulkancontext.c:654 0x00007f4178bda3db in gdk_draw_context_begin_frame_full (context=0x55f5c12693b0 [GdkWaylandVulkanContext], depth=GDK_MEMORY_U8, region=) at ../gdk/gdkdrawcontext.c:387 0x00007f4178c862e3 in gsk_gpu_frame_begin (self=0x55f5c138b610 [GskVulkanFrame], context=, depth=GDK_MEMORY_U8, region=0x55f5c1b767b0) at ../gsk/gpu/gskgpuframe.c:207 gsk_gpu_renderer_render (renderer=0x55f5c1268fb0 [GskVulkanRenderer], root=0x55f5bee62ec0 [GskTransformNode], region=0x55f5c1b767b0) at ../gsk/gpu/gskgpurenderer.c:425 0x00007f4178c1a27a in gsk_renderer_render (renderer=, root=, region=) at ../gsk/gskrenderer.c:495 0x00007f41789fefd4 in gtk_widget_render (widget=, surface=, region=0x55f5c1678430) at ../gtk/gtkwidget.c:11998 0x00007f4178a002a9 in surface_render () at ../gtk/gtkwindow.c:4771 0x00007f4179355f63 in <emit signal '???' on instance 0x55f5beebea40 [GdkWaylandToplevel]> (instance=instance@entry=0x55f5beebea40, signal_id=, detail=detail@entry=0) at ../gobject/gsignal.c:3582 0x00007f4178b6aac9 in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x55f5be632d20, return_value=0x7ffc6da2eea0, instance=, args=, marshal_data=, n_params=, param_types=0x55f5bef6feb0) at gdk/gdkmarshalers.c:130 0x00007f4179355d94 in _g_closure_invoke_va (closure=0x55f5be632d20, return_value=0x7ffc6da2eea0, instance=0x55f5beebea40, args=0x7ffc6da2ef90, n_params=, param_types=0x55f5bef6feb0) at ../gobject/gclosure.c:896 signal_emit_valist_unlocked (instance=instance@entry=0x55f5beebea40, signal_id=signal_id@entry=305, detail=detail@entry=0, var_args=var_args@entry=0x7ffc6da2ef90) at ../gobject/gsignal.c:3423 0x00007f4179355ea1 in g_signal_emit_valist (instance=0x55f5beebea40, signal_id=305, detail=0, var_args=0x7ffc6da2ef90) at ../gobject/gsignal.c:3262 0x00007f4178bf88f9 in gdk_surface_paint_on_clock (clock=, data=0x55f5beebea40) at ../gdk/gdksurface.c:1408 gdk_surface_paint_on_clock (clock=, data=0x55f5beebea40) at ../gdk/gdksurface.c:1384 0x00007f4179355f63 in <emit signal '???' on instance 0x55f5bef3ff10 [GdkFrameClockIdle]> (instance=instance@entry=0x55f5bef3ff10, signal_id=, detail=detail@entry=0) at ../gobject/gsignal.c:3582 0x00007f4179355d94 in _g_closure_invoke_va (closure=0x55f5bef400a0, return_value=0x0, instance=0x55f5bef3ff10, args=0x7ffc6da2f2e0, n_params=, param_types=0x0) at ../gobject/gclosure.c:896 signal_emit_valist_unlocked (instance=instance@entry=0x55f5bef3ff10, signal_id=signal_id@entry=314, detail=detail@entry=0, var_args=var_args@entry=0x7ffc6da2f2e0) at ../gobject/gsignal.c:3423 0x00007f4179355ea1 in g_signal_emit_valist (instance=0x55f5bef3ff10, signal_id=314, detail=0, var_args=0x7ffc6da2f2e0) at ../gobject/gsignal.c:3262 0x00007f4178bde90d in _gdk_frame_clock_emit_paint (frame_clock=0x55f5bef3ff10 [GdkFrameClockIdle]) at ../gdk/gdkframeclock.c:736 gdk_frame_clock_paint_idle (data=data@entry=0x55f5bef3ff10) at ../gdk/gdkframeclockidle.c:634 0x00007f41793d3599 in g_timeout_dispatch (source=0x55f5c1f82dc0, callback=0x7f4178bde230 <gdk_frame_clock_paint_idle>, user_data=0x55f5bef3ff10) at ../glib/gmain.c:5057 --Type for more, q to quit, c to continue without paging-- 0x00007f41793cd36c in g_main_dispatch (context=0x55f5be53c2f0) at ../glib/gmain.c:3348 g_main_context_dispatch_unlocked (context=0x55f5be53c2f0) at ../glib/gmain.c:4197 0x00007f417942d7d8 in g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x55f5be53c2f0, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../glib/gmain.c:4262 0x00007f41793ce843 in g_main_context_iteration (context=context@entry=0x55f5be53c2f0, may_block=may_block@entry=1) at ../glib/gmain.c:4327 0x00007f41786e132d in g_application_run (application=application@entry=0x55f5be53a840 [Calculator], argc=argc@entry=1, argv=argv@entry=0x7ffc6da2f7a8) at ../gio/gapplication.c:2715 0x000055f5b65588cd in calculator_main (args=0x7ffc6da2f7a8, args_length1=1) at ../src/gnome-calculator.vala:366 main (argc=1, argv=0x7ffc6da2f7a8) at ../src/gnome-calculator.vala:349
Oh, and Vulkan rendering works perfect using some Vulkan apps.
The GPU info app is on Flatpak but vkcube is running on host without any kind of problems: