graphicsoffload: Disabling offloading with Vulkan renderer causes segfault
This is with GTK from main as of now and AMD Radeon RX 550 / 550 Series (radeonsi, polaris12, LLVM 18.1.1, DRM 3.57, 6.8.7-300.fc40.x86_64)
. dmabufs come from a different GPU (same driver, different model "raphael_mendocino").
Offloading is disabled via GTK inspector and the property on the widget. The "Vulkan does not support dmabufs" is printed exactly at the moment the property is switched over to disabled.
[0x12bfd50] △ Attaching texture (1920x1080) at 14 89 640 360
Creating dmabuf texture, format NV12:0, premultiplied, 2 planes, memory format 7, downloader none
[0x12bfd50] △ Attaching texture (1920x1080) at 14 89 640 360
Vulkan does not support dmabufs
Using mmap for downloading 1920x1080 dmabuf (format NV12:0)
Caught SIGSEGV
#0 0x00007f14e27cae03 in __GI___wait4 (pid=pid@entry=192452, stat_loc=stat_loc@entry=0x7ffc2069b01c, options=options@entry=0, usage=usage@entry=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:30
#1 0x00007f14e27caf0b in __GI___waitpid (pid=pid@entry=192452, stat_loc=stat_loc@entry=0x7ffc2069b01c, options=options@entry=0) at waitpid.c:38
#2 0x00007f14e2935c43 in g_on_error_stack_trace (prg_name=<optimized out>) at ../glib/gbacktrace.c:300
#3 0x00000000004057b2 in fault_spin () at ../subprojects/gstreamer/tools/gst-launch.c:129
#4 fault_handler_sighandler (signum=11) at ../subprojects/gstreamer/tools/gst-launch.c:120
#5 0x00007f14e270a710 in <signal handler called> () at /lib64/libc.so.6
#6 0x00007f14cb2832a6 in get_uv_values (coeffs=<optimized out>, u=Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x21ffff
#7 download_nv12 (dst_data=<optimized out>, dst_stride=5760, dst_format=<optimized out>, width=1920, height=1080, dmabuf=<optimized out>, src_data=0x7ffc2069be40, sizes=0x7ffc2069be60) at ../gdk/gdkdmabuf.c:232
#8 0x00007f14cb283f72 in gdk_dmabuf_do_download_mmap (texture=0x37a43d0, data=0x7f149ca00010 "", stride=5760) at ../gdk/gdkdmabuf.c:2040
#9 0x00007f14cb2843a1 in gdk_dmabuf_download_mmap (texture=0x37a43d0, format=GDK_MEMORY_R8G8B8A8_PREMULTIPLIED, data=0x7f149d017000 "", stride=7680) at ../gdk/gdkdmabuf.c:2084
#10 0x00007f14cb285e15 in gdk_dmabuf_texture_download (texture=<optimized out>, format=<optimized out>, data=<optimized out>, stride=<optimized out>) at ../gdk/gdkdmabuftexture.c:125
#11 0x00007f14cb32e692 in gsk_gpu_upload_texture_op_draw (op=0x313c5a0, data=0x7f149d017000 "", stride=7680) at ../gsk/gpu/gskgpuuploadop.c:251
#12 0x00007f14cb32e9e9 in gsk_gpu_upload_op_vk_command_with_area (op=op@entry=0x313c5a0, frame=frame@entry=0x2d0d430, state=state@entry=0x7ffc2069c190, image=image@entry=0x3985fc0, area=area@entry=0x7ffc2069c0b0, draw_func=draw_func@entry=0x7f14cb32e650 <gsk_gpu_upload_texture_op_draw>, buffer=0x313c5b8) at ../gsk/gpu/gskgpuuploadop.c:112
#13 0x00007f14cb32f143 in gsk_gpu_upload_op_vk_command (op=0x313c5a0, frame=0x2d0d430, state=0x7ffc2069c190, image=0x3985fc0, draw_func=0x7f14cb32e650 <gsk_gpu_upload_texture_op_draw>, buffer=0x313c5b8) at ../gsk/gpu/gskgpuuploadop.c:192
#14 gsk_gpu_upload_op_vk_command (op=0x313c5a0, frame=0x2d0d430, state=0x7ffc2069c190, image=0x3985fc0, draw_func=0x7f14cb32e650 <gsk_gpu_upload_texture_op_draw>, buffer=0x313c5b8) at ../gsk/gpu/gskgpuuploadop.c:172
#15 gsk_gpu_upload_texture_op_vk_command (op=0x313c5a0, frame=0x2d0d430, state=0x7ffc2069c190) at ../gsk/gpu/gskgpuuploadop.c:263
#16 0x00007f14cb3333cb in gsk_vulkan_frame_submit (frame=0x2d0d430, vertex_buffer=0x2d0c4c0, op=<optimized out>) at ../gsk/gpu/gskvulkanframe.c:344
#17 0x00007f14cb32c5b5 in gsk_gpu_renderer_render (renderer=0x2d08b70, root=0x1f078c0, region=<optimized out>) at ../gsk/gpu/gskgpurenderer.c:411
#18 0x00007f14cb2c08ec in gsk_renderer_render (renderer=0x2d08b70, root=0x1f078c0, region=0x3991780) at ../gsk/gskrenderer.c:510
#19 0x00007f14cb0ab6fb in gtk_widget_render (widget=widget@entry=0x12c05a0, surface=0x2d07c80, region=region@entry=0x3991780) at ../gtk/gtkwidget.c:11997
#20 0x00007f14cb0b2b75 in surface_render (surface=<optimized out>, region=region@entry=0x3991780, widget=widget@entry=0x12c05a0) at ../gtk/gtkwindow.c:4756
#25 0x00007f14e28e8fd3 in <emit signal '???' on instance ???> (instance=instance@entry=0x2d07c80, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3583
#21 0x00007f14cb22ac0c in _gdk_marshal_BOOLEAN__BOXEDv (closure=0x2d0de60, return_value=0x7ffc2069c710, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x1836f00) at gdk/gdkmarshalers.c:130
#22 0x00007f14e28e8e04 in _g_closure_invoke_va (closure=0x2d0de60, return_value=0x7ffc2069c710, instance=0x2d07c80, args=0x7ffc2069c800, n_params=<optimized out>, param_types=0x1836f00) at ../gobject/gclosure.c:897
#23 signal_emit_valist_unlocked (instance=instance@entry=0x2d07c80, signal_id=signal_id@entry=297, detail=detail@entry=0, var_args=var_args@entry=0x7ffc2069c800) at ../gobject/gsignal.c:3424
#24 0x00007f14e28e8f11 in g_signal_emit_valist (instance=0x2d07c80, signal_id=297, detail=0, var_args=var_args@entry=0x7ffc2069c800) at ../gobject/gsignal.c:3263
#26 0x00007f14cb2ab3c9 in gdk_surface_paint_on_clock (clock=<optimized out>, data=0x2d07c80) at ../gdk/gdksurface.c:1370
#27 gdk_surface_paint_on_clock (clock=<optimized out>, data=0x2d07c80) at ../gdk/gdksurface.c:1346
#31 0x00007f14e28e8fd3 in <emit signal '???' on instance ???> (instance=instance@entry=0x2d08340, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3583
#28 0x00007f14e28e8e04 in _g_closure_invoke_va (closure=0x2d08640, return_value=0x0, instance=0x2d08340, args=0x7ffc2069cb50, n_params=<optimized out>, param_types=0x0) at ../gobject/gclosure.c:897
#29 signal_emit_valist_unlocked (instance=instance@entry=0x2d08340, signal_id=signal_id@entry=306, detail=detail@entry=0, var_args=var_args@entry=0x7ffc2069cb50) at ../gobject/gsignal.c:3424
#30 0x00007f14e28e8f11 in g_signal_emit_valist (instance=0x2d08340, signal_id=306, detail=0, var_args=var_args@entry=0x7ffc2069cb50) at ../gobject/gsignal.c:3263
#32 0x00007f14cb291ecf in _gdk_frame_clock_emit_paint (frame_clock=frame_clock@entry=0x2d08340) at ../gdk/gdkframeclock.c:736
#33 0x00007f14cb292d8f in gdk_frame_clock_paint_idle (data=data@entry=0x2d08340) at ../gdk/gdkframeclockidle.c:641
#34 0x00007f14e29777e9 in g_timeout_dispatch (source=0x38f4070, callback=0x7f14cb2929c0 <gdk_frame_clock_paint_idle>, user_data=0x2d08340) at ../glib/gmain.c:4989
#35 0x00007f14e297168c in g_main_dispatch (context=0x88b940) at ../glib/gmain.c:3344
#36 g_main_context_dispatch_unlocked (context=0x88b940) at ../glib/gmain.c:4152
#37 0x00007f14e29d2788 in g_main_context_iterate_unlocked.isra.0 (context=0x88b940, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4217
#38 0x00007f14e2977647 in g_main_loop_run (loop=0xb4bd30) at ../glib/gmain.c:4419
#39 0x000000000040434d in real_main (argc=11, argv=0x7ffc2069d2a8) at ../subprojects/gstreamer/tools/gst-launch.c:1329
#40 main (argc=<optimized out>, argv=<optimized out>) at ../subprojects/gstreamer/tools/gst-launch.c:1399