radeonsi: Deadlock when creating a new GL context in parallel with linking a shader on another GL context
I can somewhat reliably reproduce this here with the testcase in gstreamer/gst-plugins-rs#320 (closed) (see follow-up comment for a simplified one) but I can understand that running this will probably be not too easy so let me know if I should try something.
The general setup is:
- GTK4 on Wayland, mesa-dri-drivers-22.3.5-1 from Fedora 37
- AMD Radeon 550
- 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] (rev c7)
- AMD Radeon RX 550 / 550 Series (polaris12, LLVM 15.0.7, DRM 3.49, 6.1.10-200.fc37.x86_64) (0x699f)
The situation is:
- GTK links a shader on its own thread
- GStreamer creates a new GL context on another thread that shares with the GTK GL context indirectly
- Indirectly meaning: GTK has a GL context A, GTK created a new GL context B that shares with A, GStreamer creates a new GL context C that shares with B
This regularly (most of the times without debugger, 1 in 4 times with debugger) deadlocks unless both threads are artificially synchronized with a sleep()
.
- Thread 21 creates a new GL context that shares with the one used in thread 1
- Thread 1 is linking shaders
- Threads 7-12 and 16, 22, 23 look like worker threads that have nothing to do, not sure
- Thread 20 looks like it waits for something to finish
Thread 23 (Thread 0x7fff98ff96c0 (LWP 920302) "gtksink:gdrv0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 22 (Thread 0x7fff997fa6c0 (LWP 920301) "gtksink:sh2"):
#0 0x00007ffff6cc8f50 in __lll_lock_wait () at /lib64/libc.so.6
#1 0x00007ffff6ccf412 in pthread_mutex_lock@@GLIBC_2.2.5 () at /lib64/libc.so.6
#2 0x00007fffdcf0c6ad in mtx_lock () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd18 in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 21 (Thread 0x7fff99ffb6c0 (LWP 920300) "gstglcontext"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007fffdceb7586 in futex_wait () at /usr/lib64/dri/radeonsi_dri.so
#2 0x00007fffdcebcb1f in do_futex_fence_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebdb61 in util_queue_finish () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdd667db2 in si_set_debug_callback () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007fffdd0131d3 in _mesa_update_debug_callback () at /usr/lib64/dri/radeonsi_dri.so
#6 0x00007fffdcf77783 in st_api_create_context () at /usr/lib64/dri/radeonsi_dri.so
#7 0x00007fffdceb05d3 in dri_create_context () at /usr/lib64/dri/radeonsi_dri.so
#8 0x00007fffdceb3ccc in driCreateContextAttribs () at /usr/lib64/dri/radeonsi_dri.so
#9 0x00007fffe415ecb1 in dri2_create_context () at /lib64/libEGL_mesa.so.0
#10 0x00007fffe41507fa in eglCreateContext () at /lib64/libEGL_mesa.so.0
#11 0x00007ffff7f7016c in _create_context_with_flags () at /lib64/libgstgl-1.0.so.0
#12 0x00007ffff7f727cc in gst_gl_context_egl_create_context () at /lib64/libgstgl-1.0.so.0
#13 0x00007ffff7f4c342 in gst_gl_context_create_thread () at /lib64/libgstgl-1.0.so.0
#14 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd4064980) at ../glib/gthread.c:831
#15 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#16 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 20 (Thread 0x7fff9a7fc6c0 (LWP 920299) "gtksink:sh1"):
#0 0x00007ffff6cca529 in pthread_barrier_wait@GLIBC_2.2.5 () at /lib64/libc.so.6
#1 0x00007fffdcebe01d in util_barrier_wait () at /usr/lib64/dri/radeonsi_dri.so
#2 0x00007fffdcebcc8d in util_queue_finish_execute () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebce03 in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 19 (Thread 0x7fff9affd6c0 (LWP 920298) "multiqueue0:src"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007ffff7b88e83 in g_cond_wait (cond=0x7fff8c0185f8, mutex=0x7fff8c0185f0) at ../glib/gthread-posix.c:1590
#2 0x00007ffff7f49f5d in gst_gl_context_create () at /lib64/libgstgl-1.0.so.0
#3 0x00007ffff7f4a1ad in gst_gl_display_create_context () at /lib64/libgstgl-1.0.so.0
#4 0x00007ffff7f3e43e in gst_gl_base_filter_find_gl_context_unlocked () at /lib64/libgstgl-1.0.so.0
#5 0x00007ffff7f3eb25 in gst_gl_base_filter_find_gl_context () at /lib64/libgstgl-1.0.so.0
#6 0x00007fffc82ee480 in gst_gl_color_convert_element_transform_caps () at /usr/lib64/gstreamer-1.0/libgstopengl.so
#7 0x00007ffff7e1369a in gst_base_transform_transform_caps () at /lib64/libgstbase-1.0.so.0
#8 0x00007ffff7e1a80a in gst_base_transform_default_query () at /lib64/libgstbase-1.0.so.0
#9 0x00007ffff7d10b3a in gst_pad_query () at /lib64/libgstreamer-1.0.so.0
#10 0x00007ffff7d13907 in gst_pad_peer_query () at /lib64/libgstreamer-1.0.so.0
#11 0x00007ffff7d546e4 in gst_pad_peer_query_caps () at /lib64/libgstreamer-1.0.so.0
#12 0x00007ffff7e1a710 in gst_base_transform_default_query () at /lib64/libgstbase-1.0.so.0
#13 0x00007ffff7d10b3a in gst_pad_query () at /lib64/libgstreamer-1.0.so.0
#14 0x00007ffff7d13907 in gst_pad_peer_query () at /lib64/libgstreamer-1.0.so.0
#15 0x00007ffff7d53e3c in query_caps_func () at /lib64/libgstreamer-1.0.so.0
#16 0x00007ffff7d1043a in gst_pad_forward () at /lib64/libgstreamer-1.0.so.0
#17 0x00007ffff7d54032 in gst_pad_proxy_query_caps () at /lib64/libgstreamer-1.0.so.0
#18 0x00007ffff7d177c8 in gst_pad_query_default () at /lib64/libgstreamer-1.0.so.0
#19 0x00007ffff7d10b3a in gst_pad_query () at /lib64/libgstreamer-1.0.so.0
#20 0x00007ffff7d54504 in gst_pad_query_caps () at /lib64/libgstreamer-1.0.so.0
#21 0x00007ffff7d4cdb8 in gst_element_get_compatible_pad () at /lib64/libgstreamer-1.0.so.0
#22 0x00007ffff7d51ded in gst_element_link_pads_full () at /lib64/libgstreamer-1.0.so.0
#23 0x00007fffc8296149 in gen_video_chain.lto_priv () at /usr/lib64/gstreamer-1.0/libgstplayback.so
#24 0x00007fffc82ac9df in gst_play_sink_do_reconfigure.isra () at /usr/lib64/gstreamer-1.0/libgstplayback.so
#25 0x00007fffc8292aff in sinkpad_blocked_cb.lto_priv () at /usr/lib64/gstreamer-1.0/libgstplayback.so
#26 0x00007ffff7d0eeed in probe_hook_marshal () at /lib64/libgstreamer-1.0.so.0
#27 0x00007ffff7b1da3e in g_hook_list_marshal (hook_list=0x555555cadd98, may_recurse=1, marshaller=0x7ffff7d0eb60 <probe_hook_marshal>, data=0x7fff9affb450) at ../glib/ghook.c:674
#28 0x00007ffff7d0f496 in do_probe_callbacks () at /lib64/libgstreamer-1.0.so.0
#29 0x00007ffff7d12c4b in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#30 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#31 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#32 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#33 0x00007ffff7d1687a in event_forward_func () at /lib64/libgstreamer-1.0.so.0
#34 0x00007ffff7d1043a in gst_pad_forward () at /lib64/libgstreamer-1.0.so.0
#35 0x00007ffff7d10584 in gst_pad_event_default () at /lib64/libgstreamer-1.0.so.0
#36 0x00007ffff7d126e3 in gst_pad_send_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#37 0x00007ffff7d12e26 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#38 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#39 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#40 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#41 0x00007ffff7d1687a in event_forward_func () at /lib64/libgstreamer-1.0.so.0
#42 0x00007ffff7d1043a in gst_pad_forward () at /lib64/libgstreamer-1.0.so.0
#43 0x00007ffff7d10584 in gst_pad_event_default () at /lib64/libgstreamer-1.0.so.0
#44 0x00007fffc81e144f in gst_concat_sink_event () at /usr/lib64/gstreamer-1.0/libgstcoreelements.so
#45 0x00007ffff7d126e3 in gst_pad_send_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#46 0x00007ffff7d12e26 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#47 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#48 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#49 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#50 0x00007ffff7d1687a in event_forward_func () at /lib64/libgstreamer-1.0.so.0
#51 0x00007ffff7d1043a in gst_pad_forward () at /lib64/libgstreamer-1.0.so.0
#52 0x00007ffff7d10584 in gst_pad_event_default () at /lib64/libgstreamer-1.0.so.0
#53 0x00007ffff7d126e3 in gst_pad_send_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#54 0x00007ffff7d12e26 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#55 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#56 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#57 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#58 0x00007ffff7d1687a in event_forward_func () at /lib64/libgstreamer-1.0.so.0
#59 0x00007ffff7d1043a in gst_pad_forward () at /lib64/libgstreamer-1.0.so.0
#60 0x00007ffff7d10584 in gst_pad_event_default () at /lib64/libgstreamer-1.0.so.0
#61 0x00007ffff7d126e3 in gst_pad_send_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#62 0x00007ffff7d12e26 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#63 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#64 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#65 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#66 0x00007fffe400a159 in gst_pngdec_sink_event () at /usr/lib64/gstreamer-1.0/libgstpng.so
#67 0x00007ffff7d126e3 in gst_pad_send_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#68 0x00007ffff7d12e26 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#69 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#70 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#71 0x00007ffff7d13153 in gst_pad_push_event_unchecked () at /lib64/libgstreamer-1.0.so.0
#72 0x00007ffff7d132da in push_sticky () at /lib64/libgstreamer-1.0.so.0
#73 0x00007ffff7d092e7 in events_foreach.lto_priv () at /lib64/libgstreamer-1.0.so.0
#74 0x00007ffff7d16737 in gst_pad_push_event () at /lib64/libgstreamer-1.0.so.0
#75 0x00007fffc81f9db8 in gst_multi_queue_loop () at /usr/lib64/gstreamer-1.0/libgstcoreelements.so
#76 0x00007ffff7d3b6e1 in gst_task_func () at /lib64/libgstreamer-1.0.so.0
#77 0x00007ffff7b66af2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#78 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd401f6a0) at ../glib/gthread.c:831
#79 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#80 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 18 (Thread 0x7fff9b7fe6c0 (LWP 920297) "pngparse0:sink"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007ffff7b88e83 in g_cond_wait (cond=0x555555c71e30, mutex=0x555555c71de8) at ../glib/gthread-posix.c:1590
#2 0x00007ffff7d3b8cc in gst_task_func () at /lib64/libgstreamer-1.0.so.0
#3 0x00007ffff7b66af2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#4 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd401a400) at ../glib/gthread.c:831
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 17 (Thread 0x7fff9bfff6c0 (LWP 920296) "typefind:sink"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007ffff7b88e83 in g_cond_wait (cond=0x555555c71890, mutex=0x555555c71848) at ../glib/gthread-posix.c:1590
#2 0x00007ffff7d3b8cc in gst_task_func () at /lib64/libgstreamer-1.0.so.0
#3 0x00007ffff7b66af2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#4 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd4015300) at ../glib/gthread.c:831
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 16 (Thread 0x7fffb8ff96c0 (LWP 920295) "gtksink:gdrv0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 15 (Thread 0x7fffb97fa6c0 (LWP 920294) "typefindelement"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007ffff7b88e83 in g_cond_wait (cond=0x555555c71410, mutex=0x555555c713c8) at ../glib/gthread-posix.c:1590
#2 0x00007ffff7d3b8cc in gst_task_func () at /lib64/libgstreamer-1.0.so.0
#3 0x00007ffff7b66af2 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:352
#4 0x00007ffff7b619c2 in g_thread_proxy (data=0x555555a87520) at ../glib/gthread.c:831
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 14 (Thread 0x7fffb9ffb6c0 (LWP 920293) "gldisplay-event"):
#0 0x00007ffff6d4021f in poll () at /lib64/libc.so.6
#1 0x00007ffff7b8d50d in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x555555c70f10, timeout=<optimized out>, context=0x7fffa8000b70) at ../glib/gmain.c:4543
#2 g_main_context_iterate.constprop.0 (context=0x7fffa8000b70, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4233
#3 0x00007ffff7b3728f in g_main_loop_run (loop=0x7fffa8001490) at ../glib/gmain.c:4438
#4 0x00007ffff7f45c1b in _event_thread_main () at /lib64/libgstgl-1.0.so.0
#5 0x00007ffff7b619c2 in g_thread_proxy (data=0x555555a8e120) at ../glib/gthread.c:831
#6 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#7 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 13 (Thread 0x7fffba7fc6c0 (LWP 920292) "gldisplay-event"):
#0 0x00007ffff6d4021f in poll () at /lib64/libc.so.6
#1 0x00007ffff7b8d50d in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x555555c6e650, timeout=<optimized out>, context=0x7fffa4000b70) at ../glib/gmain.c:4543
#2 g_main_context_iterate.constprop.0 (context=0x7fffa4000b70, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4233
#3 0x00007ffff7b3728f in g_main_loop_run (loop=0x7fffa4001490) at ../glib/gmain.c:4438
#4 0x00007ffff7f45c1b in _event_thread_main () at /lib64/libgstgl-1.0.so.0
#5 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd41090c0) at ../glib/gthread.c:831
#6 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#7 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 12 (Thread 0x7fffbaffd6c0 (LWP 920291) "gtksink:gdrv0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 11 (Thread 0x7fffbb7fe6c0 (LWP 920290) "gtksink:gdrv0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 10 (Thread 0x7fffbbfff6c0 (LWP 920289) "gtksink:shlo0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 9 (Thread 0x7fffc8bfe6c0 (LWP 920288) "gtksink:sh0"):
#0 0x00007ffff6cca529 in pthread_barrier_wait@GLIBC_2.2.5 () at /lib64/libc.so.6
#1 0x00007fffdcebe01d in util_barrier_wait () at /usr/lib64/dri/radeonsi_dri.so
#2 0x00007fffdcebcc8d in util_queue_finish_execute () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebce03 in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 8 (Thread 0x7fffc93ff6c0 (LWP 920287) "gtksink:disk$0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 7 (Thread 0x7fffdcdff6c0 (LWP 920286) "gtksink:cs0"):
#0 0x00007ffff6cc8d16 in __futex_abstimed_wait_common () at /lib64/libc.so.6
#1 0x00007ffff6ccb510 in pthread_cond_wait@@GLIBC_2.3.2 () at /lib64/libc.so.6
#2 0x00007fffdcf0c5dd in cnd_wait () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebcd3b in util_queue_thread_func () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdcf0c50b in impl_thrd_routine () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#6 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 6 (Thread 0x7fffdeffd6c0 (LWP 920285) "pool-gtksink"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007ffff7b894c4 in g_cond_wait_until (cond=<optimized out>, mutex=0x55555598aea0, end_time=<optimized out>) at ../glib/gthread-posix.c:1669
#2 0x00007ffff7b07451 in g_async_queue_pop_intern_unlocked (queue=0x55555598aea0, wait=1, end_time=196624593929) at ../glib/gasyncqueue.c:428
#3 0x00007ffff7b075e5 in g_async_queue_timeout_pop (queue=0x55555598aea0, timeout=<optimized out>) at ../glib/gasyncqueue.c:551
#4 0x00007ffff7b669a5 in g_thread_pool_wait_for_new_pool () at ../glib/gthreadpool.c:183
#5 g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:410
#6 0x00007ffff7b619c2 in g_thread_proxy (data=0x5555559f2180) at ../glib/gthread.c:831
#7 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#8 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 5 (Thread 0x7fffdf7fe6c0 (LWP 920284) "gdbus"):
#0 0x00007ffff6d4021f in poll () at /lib64/libc.so.6
#1 0x00007ffff7b8d50d in g_main_context_poll (priority=<optimized out>, n_fds=3, fds=0x7fffd8014ad0, timeout=<optimized out>, context=0x7fffd8012de0) at ../glib/gmain.c:4543
#2 g_main_context_iterate.constprop.0 (context=0x7fffd8012de0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4233
#3 0x00007ffff7b3728f in g_main_loop_run (loop=0x7fffd8012ed0) at ../glib/gmain.c:4438
#4 0x00007ffff701488a in gdbus_shared_thread_func (user_data=0x7fffd8012db0) at ../gio/gdbusprivate.c:284
#5 0x00007ffff7b619c2 in g_thread_proxy (data=0x7fffd8008640) at ../glib/gthread.c:831
#6 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#7 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 4 (Thread 0x7fffdffff6c0 (LWP 920283) "dconf worker"):
#0 0x00007ffff6d4021f in poll () at /lib64/libc.so.6
#1 0x00007ffff7b8d50d in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x555555971c30, timeout=<optimized out>, context=0x55555598c4c0) at ../glib/gmain.c:4543
#2 g_main_context_iterate.constprop.0 (context=0x55555598c4c0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4233
#3 0x00007ffff7b34f40 in g_main_context_iteration (context=0x55555598c4c0, may_block=1) at ../glib/gmain.c:4303
#4 0x00007fffe46a638d in dconf_gdbus_worker_thread () at /usr/lib64/gio/modules/libdconfsettings.so
#5 0x00007ffff7b619c2 in g_thread_proxy (data=0x555555958640) at ../glib/gthread.c:831
#6 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#7 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 3 (Thread 0x7fffe5dff6c0 (LWP 920282) "gmain"):
#0 0x00007ffff6d4021f in poll () at /lib64/libc.so.6
#1 0x00007ffff7b8d50d in g_main_context_poll (priority=<optimized out>, n_fds=1, fds=0x5555559700d0, timeout=<optimized out>, context=0x55555598afa0) at ../glib/gmain.c:4543
#2 g_main_context_iterate.constprop.0 (context=0x55555598afa0, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4233
#3 0x00007ffff7b34f40 in g_main_context_iteration (context=0x55555598afa0, may_block=may_block@entry=1) at ../glib/gmain.c:4303
#4 0x00007ffff7b36bd1 in glib_worker_main (data=<optimized out>) at ../glib/gmain.c:6414
#5 0x00007ffff7b619c2 in g_thread_proxy (data=0x555555981b00) at ../glib/gthread.c:831
#6 0x00007ffff6ccc12d in start_thread () at /lib64/libc.so.6
#7 0x00007ffff6d4dbc0 in clone3 () at /lib64/libc.so.6
Thread 1 (Thread 0x7ffff5508a80 (LWP 920275) "gtksink"):
#0 0x00007ffff6d4592d in syscall () at /lib64/libc.so.6
#1 0x00007fffdceb7586 in futex_wait () at /usr/lib64/dri/radeonsi_dri.so
#2 0x00007fffdcebd2f7 in util_queue_adjust_num_threads () at /usr/lib64/dri/radeonsi_dri.so
#3 0x00007fffdcebd780 in util_queue_add_job () at /usr/lib64/dri/radeonsi_dri.so
#4 0x00007fffdd69f217 in si_schedule_initial_compile () at /usr/lib64/dri/radeonsi_dri.so
#5 0x00007fffdd69f4e3 in si_create_shader_selector(pipe_context*, pipe_shader_state const*) () at /usr/lib64/dri/radeonsi_dri.so
#6 0x00007fffdd9788ca in util_live_shader_cache_get () at /usr/lib64/dri/radeonsi_dri.so
#7 0x00007fffdd697157 in si_create_shader(pipe_context*, pipe_shader_state const*) () at /usr/lib64/dri/radeonsi_dri.so
#8 0x00007fffdcf83fed in st_create_nir_shader () at /usr/lib64/dri/radeonsi_dri.so
#9 0x00007fffdcf8488d in st_create_fp_variant () at /usr/lib64/dri/radeonsi_dri.so
#10 0x00007fffdcf84ebc in st_get_fp_variant () at /usr/lib64/dri/radeonsi_dri.so
#11 0x00007fffdcf853b8 in st_finalize_program () at /usr/lib64/dri/radeonsi_dri.so
#12 0x00007fffdcf8698c in st_deserialise_nir_program () at /usr/lib64/dri/radeonsi_dri.so
#13 0x00007fffdcf86b29 in st_load_nir_from_disk_cache () at /usr/lib64/dri/radeonsi_dri.so
#14 0x00007fffdd142890 in st_link_shader () at /usr/lib64/dri/radeonsi_dri.so
#15 0x00007fffdd130f9c in _mesa_glsl_link_shader () at /usr/lib64/dri/radeonsi_dri.so
#16 0x00007fffdd107f0b in link_program_error.part () at /usr/lib64/dri/radeonsi_dri.so
#17 0x00007ffff761f57e in gsk_gl_compiler_compile () at /lib64/libgtk-4.so.1
#18 0x00007ffff7621400 in gsk_gl_driver_load_programs.lto_priv () at /lib64/libgtk-4.so.1
#19 0x00007ffff7618433 in gsk_gl_renderer_realize () at /lib64/libgtk-4.so.1
#20 0x00007ffff7600b7e in gsk_renderer_realize () at /lib64/libgtk-4.so.1
#21 0x00007ffff7600cfa in gsk_renderer_new_for_surface () at /lib64/libgtk-4.so.1
#22 0x00007ffff74d0418 in gtk_window_realize () at /lib64/libgtk-4.so.1
#23 0x00007ffff72c3434 in gtk_application_window_real_realize () at /lib64/libgtk-4.so.1
#24 0x00007ffff7c52554 in _g_closure_invoke_va (param_types=<optimized out>, n_params=<optimized out>, args=0x7fffffffc990, instance=<optimized out>, return_value=<optimized out>, closure=0x5555559c9ae0) at ../gobject/gclosure.c:895
#25 g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc990) at ../gobject/gsignal.c:3456
#26 0x00007ffff7c52633 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3606
#27 0x00007ffff74ba9e4 in gtk_widget_realize () at /lib64/libgtk-4.so.1
#28 0x00007ffff74ce69c in gtk_window_show () at /lib64/libgtk-4.so.1
#29 0x00007ffff7c52554 in _g_closure_invoke_va (param_types=<optimized out>, n_params=<optimized out>, args=0x7fffffffcc40, instance=<optimized out>, return_value=<optimized out>, closure=0x5555559c9f20) at ../gobject/gclosure.c:895
#30 g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffcc40) at ../gobject/gsignal.c:3456
#31 0x00007ffff7c52633 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3606
#32 0x00007ffff74b793e in gtk_widget_show () at /lib64/libgtk-4.so.1
#33 0x00005555555de2ec in gtk4::auto::widget::{impl#2}::show<gtk4::auto::application_window::ApplicationWindow> (self=0x7fffffffcd48) at /home/slomo/.cargo/git/checkouts/gtk4-rs-e74ad56283dfeb5e/bb19d8f/gtk4/src/auto/widget.rs:1874
#34 gtksink::create_ui (app=0x7fffffffd720) at video/gtk4/examples/gtksink.rs:92
#35 0x00005555555dcde1 in core::ops::function::Fn::call<fn(>k4::auto::application::Application), (>k4::auto::application::Application)> () at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/ops/function.rs:161
#36 gio::auto::application::{impl#3}::connect_activate::activate_trampoline<gtk4::auto::application::Application, fn(>k4::auto::application::Application)> (this=<optimized out>, f=<optimized out>) at /home/slomo/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/dc393c3/gio/src/auto/application.rs:538
#37 0x00007ffff7c34fc0 in g_closure_invoke (closure=0x5555559cb700, return_value=0x0, n_param_values=1, param_values=0x7fffffffd8f0, invocation_hint=0x7fffffffd870) at ../gobject/gclosure.c:832
#38 0x00007ffff7c62d86 in signal_emit_unlocked_R.isra.0 (node=node@entry=0x5555559bc460, detail=detail@entry=0, instance=instance@entry=0x7fffd8009760, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd8f0) at ../gobject/gsignal.c:3796
#39 0x00007ffff7c5241a in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffda90) at ../gobject/gsignal.c:3549
#40 0x00007ffff7c52633 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at ../gobject/gsignal.c:3606
#41 0x00005555555dcc96 in core::ops::function::Fn::call<fn(>k4::auto::application::Application, &[gio::auto::file::File], &str), (>k4::auto::application::Application, &[gio::auto::file::File], &str)> () at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/ops/function.rs:161
#42 gio::application::{impl#0}::connect_open::open_trampoline<gtk4::auto::application::Application, fn(>k4::auto::application::Application, &[gio::auto::file::File], &str)> (this=<optimized out>, files=<optimized out>, n_files=<optimized out>, hint=<optimized out>, f=<optimized out>) at /home/slomo/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/dc393c3/gio/src/application.rs:54
#43 0x00007ffff7c34fc0 in g_closure_invoke (closure=0x555555993690, return_value=0x0, n_param_values=4, param_values=0x7fffffffdd80, invocation_hint=0x7fffffffdd00) at ../gobject/gclosure.c:832
#44 0x00007ffff7c62d86 in signal_emit_unlocked_R.isra.0 (node=node@entry=0x5555559bc600, detail=detail@entry=0, instance=instance@entry=0x7fffd8009760, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffdd80) at ../gobject/gsignal.c:3796
#45 0x00007ffff7c5241a in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdf70) at ../gobject/gsignal.c:3549
#46 0x00007ffff7c52633 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3606
#47 0x00007ffff6fdf4bf in g_application_open (application=<optimized out>, files=files@entry=0x5555559921c0, n_files=n_files@entry=1, hint=hint@entry=0x7ffff706882e "") at ../gio/gapplication.c:2354
#48 0x00007ffff6fdf5f4 in g_application_real_local_command_line (application=<optimized out>, arguments=0x7fffffffe0b8, exit_status=0x7fffffffe0b4) at ../gio/gapplication.c:1169
#49 0x00007ffff6fdf8b8 in g_application_run (application=0x7fffd8009760 [GtkApplication], argc=<optimized out>, argv=0x5555559a4f60) at ../gio/gapplication.c:2540
#50 0x00005555555dbff0 in gio::application::{impl#0}::run_with_args<gtk4::auto::application::Application, alloc::string::String> (args=..., self=<optimized out>) at /home/slomo/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/dc393c3/gio/src/application.rs:37
#51 gio::application::{impl#0}::run<gtk4::auto::application::Application> (self=<optimized out>) at /home/slomo/.cargo/git/checkouts/gtk-rs-core-7be42ca38bd6361c/dc393c3/gio/src/application.rs:30
#52 0x00005555555de962 in gtksink::main () at video/gtk4/examples/gtksink.rs:121