gsk: vulkan renderer breaks gtk4 apps on Raspberry Pi 4 and 400
On Fedora-Workstation-Rawhide-20240520.n.0.aarch64, gnome-initial-setup won't start on Raspberry Pi 4 and 400. This bug only happens with vulkan renderer. If I write GSK_RENDERER=gl
or GSK_RENDERER=ngl
to /etc/environment
, gnome-initial-setup starts as expected and I'm able to finish the initial setup process.
However, when I switch back to vulkan renderer I'm not able to start any gtk4 app (such as nautilus, gnome-calendar, gnome-calculator, gnome-text-editor), gtk3 apps work as expected.
- gtk4-4.15.0-1.fc41.aarch64
- gnome-initial-setup-46.1-1.fc41.aarch64
- nautilus-46.1-1.fc41.aarch64
- gnome-calendar-46.1-1.fc41.aarch64
- mesa-vulkan-drivers-24.1.0~rc4-1.fc41.aarch64
Steps to Reproduce:
- use arm-image-installer to create a bootable SD card
- insert the SD card into Raspberry Pi 4 or 400 and boot
- gnome-initial-setup won't start
- write
GSK_RENDERER=gl
to/etc/environment
and reboot - gnome-initial-setup starts, go through it
- change
GSK_RENDERER
in/etc/environment
tovulkan
(or delete the line) and reboot - gtk4 apps don't start
The problematic functions seems to be gsk_gpu_box_shadow_op
and gsk_gpu_color_op
.
gnome-initial-setup stack trace:
#0 0x0000ffffa95229bc gsk_gpu_box_shadow_op (libgtk-4.so.1 + 0x5229bc)
#1 0x0000ffffa952b0a8 gsk_gpu_node_processor_add_outset_shadow_node (libgtk-4.so.1 + 0x52b0a8)
#2 0x0000ffffa9531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#3 0x0000ffffa9531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#4 0x0000ffffa9530d80 gsk_gpu_node_processor_add_transform_node (libgtk-4.so.1 + 0x530d80)
#5 0x0000ffffa95240e0 gsk_gpu_frame_record.lto_priv.0 (libgtk-4.so.1 + 0x5240e0)
#6 0x0000ffffa952f0ec gsk_gpu_renderer_render (libgtk-4.so.1 + 0x52f0ec)
#7 0x0000ffffa94cd980 gsk_renderer_render (libgtk-4.so.1 + 0x4cd980)
#8 0x0000ffffa92c1c18 gtk_widget_render (libgtk-4.so.1 + 0x2c1c18)
#9 0x0000ffffa92c2d08 surface_render (libgtk-4.so.1 + 0x2c2d08)
#10 0x0000ffffa9428bbc _gdk_marshal_BOOLEAN__BOXEDv (libgtk-4.so.1 + 0x428bbc)
#11 0x0000ffffaa28aa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#12 0x0000ffffaa28ac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#13 0x0000ffffaa28ad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#14 0x0000ffffa94ba048 gdk_surface_paint_on_clock (libgtk-4.so.1 + 0x4ba048)
#15 0x0000ffffaa28aa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#16 0x0000ffffaa28ac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#17 0x0000ffffaa28ad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#18 0x0000ffffa949c80c gdk_frame_clock_paint_idle (libgtk-4.so.1 + 0x49c80c)
#19 0x0000ffffa9ed7240 g_timeout_dispatch (libglib-2.0.so.0 + 0x67240)
#20 0x0000ffffa9ed0c74 g_main_context_dispatch_unlocked.lto_priv.0 (libglib-2.0.so.0 + 0x60c74)
#21 0x0000ffffa9f35a84 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xc5a84)
#22 0x0000ffffa9ed2344 g_main_context_iteration (libglib-2.0.so.0 + 0x62344)
#23 0x0000ffffaa0fd5a8 g_application_run (libgio-2.0.so.0 + 0xfd5a8)
#24 0x0000aaaacebd382c main (gnome-initial-setup + 0x2382c)
#25 0x0000ffffa3a50b1c __libc_start_call_main (libc.so.6 + 0x30b1c)
#26 0x0000ffffa3a50bfc __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x30bfc)
#27 0x0000aaaacebd3ab0 _start (gnome-initial-setup + 0x23ab0)
nautilus stack trace:
#0 0x0000ffffa6b229bc gsk_gpu_box_shadow_op (libgtk-4.so.1 + 0x5229bc)
#1 0x0000ffffa6b2b0a8 gsk_gpu_node_processor_add_outset_shadow_node (libgtk-4.so.1 + 0x52b0a8)
#2 0x0000ffffa6b31c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#3 0x0000ffffa6b31c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#4 0x0000ffffa6b30d80 gsk_gpu_node_processor_add_transform_node (libgtk-4.so.1 + 0x530d80)
#5 0x0000ffffa6b240e0 gsk_gpu_frame_record.lto_priv.0 (libgtk-4.so.1 + 0x5240e0)
#6 0x0000ffffa6b2f0ec gsk_gpu_renderer_render (libgtk-4.so.1 + 0x52f0ec)
#7 0x0000ffffa6acd980 gsk_renderer_render (libgtk-4.so.1 + 0x4cd980)
#8 0x0000ffffa68c1c18 gtk_widget_render (libgtk-4.so.1 + 0x2c1c18)
#9 0x0000ffffa68c2d08 surface_render (libgtk-4.so.1 + 0x2c2d08)
#10 0x0000ffffa6a28bbc _gdk_marshal_BOOLEAN__BOXEDv (libgtk-4.so.1 + 0x428bbc)
#11 0x0000ffffa61aaa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#12 0x0000ffffa61aac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#13 0x0000ffffa61aad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#14 0x0000ffffa6aba048 gdk_surface_paint_on_clock (libgtk-4.so.1 + 0x4ba048)
#15 0x0000ffffa61aaa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#16 0x0000ffffa61aac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#17 0x0000ffffa61aad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#18 0x0000ffffa6a9c80c gdk_frame_clock_paint_idle (libgtk-4.so.1 + 0x49c80c)
#19 0x0000ffffa7347240 g_timeout_dispatch (libglib-2.0.so.0 + 0x67240)
#20 0x0000ffffa7340c74 g_main_context_dispatch_unlocked.lto_priv.0 (libglib-2.0.so.0 + 0x60c74)
#21 0x0000ffffa73a5a84 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xc5a84)
#22 0x0000ffffa7342344 g_main_context_iteration (libglib-2.0.so.0 + 0x62344)
#23 0x0000ffffa62fd5a8 g_application_run (libgio-2.0.so.0 + 0xfd5a8)
#24 0x0000aaaacf956b5c main (nautilus + 0x36b5c)
#25 0x0000ffffa5a30b1c __libc_start_call_main (libc.so.6 + 0x30b1c)
#26 0x0000ffffa5a30bfc __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x30bfc)
#27 0x0000aaaacf956bf0 _start (nautilus + 0x36bf0)
gnome-calendar stack trace:
#0 0x0000ffffb0522e8c gsk_gpu_color_op (libgtk-4.so.1 + 0x522e8c)
#1 0x0000ffffb0529cd8 gsk_gpu_node_processor_add_color_node (libgtk-4.so.1 + 0x529cd8)
#2 0x0000ffffb0531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#3 0x0000ffffb0531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#4 0x0000ffffb0531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#5 0x0000ffffb0531c2c gsk_gpu_node_processor_add_container_node (libgtk-4.so.1 + 0x531c2c)
#6 0x0000ffffb05240e0 gsk_gpu_frame_record.lto_priv.0 (libgtk-4.so.1 + 0x5240e0)
#7 0x0000ffffb052f0ec gsk_gpu_renderer_render (libgtk-4.so.1 + 0x52f0ec)
#8 0x0000ffffb04cd980 gsk_renderer_render (libgtk-4.so.1 + 0x4cd980)
#9 0x0000ffffb02c1c18 gtk_widget_render (libgtk-4.so.1 + 0x2c1c18)
#10 0x0000ffffb02c2d08 surface_render (libgtk-4.so.1 + 0x2c2d08)
#11 0x0000ffffb0428bbc _gdk_marshal_BOOLEAN__BOXEDv (libgtk-4.so.1 + 0x428bbc)
#12 0x0000ffffaffaaa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#13 0x0000ffffaffaac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#14 0x0000ffffaffaad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#15 0x0000ffffb04ba048 gdk_surface_paint_on_clock (libgtk-4.so.1 + 0x4ba048)
#16 0x0000ffffaffaaa80 signal_emit_valist_unlocked (libgobject-2.0.so.0 + 0x3aa80)
#17 0x0000ffffaffaac58 g_signal_emit_valist (libgobject-2.0.so.0 + 0x3ac58)
#18 0x0000ffffaffaad10 g_signal_emit (libgobject-2.0.so.0 + 0x3ad10)
#19 0x0000ffffb049c80c gdk_frame_clock_paint_idle (libgtk-4.so.1 + 0x49c80c)
#20 0x0000ffffafad7240 g_timeout_dispatch (libglib-2.0.so.0 + 0x67240)
#21 0x0000ffffafad0c74 g_main_context_dispatch_unlocked.lto_priv.0 (libglib-2.0.so.0 + 0x60c74)
#22 0x0000ffffafb35a84 g_main_context_iterate_unlocked.isra.0 (libglib-2.0.so.0 + 0xc5a84)
#23 0x0000ffffafad2344 g_main_context_iteration (libglib-2.0.so.0 + 0x62344)
#24 0x0000ffffafcfd5a8 g_application_run (libgio-2.0.so.0 + 0xfd5a8)
#25 0x0000aaaae65e47b8 main (gnome-calendar + 0x247b8)
#26 0x0000ffffaf4c0b1c __libc_start_call_main (libc.so.6 + 0x30b1c)
#27 0x0000ffffaf4c0bfc __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x30bfc)
#28 0x0000aaaae65e48f0 _start (gnome-calendar + 0x248f0)