vkDestroySwapchain causes deadlock with X11
Submitted by mai..@..nux.us
Assigned to mes..@..op.org
Link to original bug (#103538)
Description
When using the X11 backend in GLFW on RADV (and Anvil for that matter), when tearing down the device, vkDestroySwapchain deadlocks while waiting for a thread to complete execution. vkDeviceWaitIdle() has been called prior.
thread 1:
#0 0x00007ffff747743d in pthread_join () from /usr/lib/libpthread.so.0
#1 0x00007ffff4968fa0 in x11_swapchain_destroy (anv_chain=0x555556680b50, pAllocator=0x55555654eac8) at wsi/wsi_common_x11.c:1088
#2 0x00007ffff4957cdc in radv_DestroySwapchainKHR (_device=0x55555654eac0, _swapchain=0x555556680b50, pAllocator=0x0) at radv_wsi.c:418
#3 0x00007fffeee27eff in ?? () from /usr/lib/libVkLayer_unique_objects.so
thread 2:
#0 0x00007ffff747c38d in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1 0x00007ffff4a48b90 in cnd_wait (cond=0x5555564bdd18, mtx=0x5555564bdcf0) at ../../include/c11/threads_posix.h:159
#2 0x00007ffff4a49283 in util_queue_thread_func (input=0x5555564be310) at u_queue.c:171
#3 0x00007ffff4a48aa5 in impl_thrd_routine (p=0x5555564be330) at ../../include/c11/threads_posix.h:87
#4 0x00007ffff747608a in start_thread () from /usr/lib/libpthread.so.0
#5 0x00007ffff68c424f in clone () from /usr/lib/libc.so.6
thread 3:
#0 0x00007ffff68b9d4b in poll () from /usr/lib/libc.so.6
#1 0x00007ffff65b18e0 in ?? () from /usr/lib/libxcb.so.1
#2 0x00007ffff65b3779 in xcb_wait_for_special_event () from /usr/lib/libxcb.so.1
#3 0x00007ffff4968a14 in x11_manage_fifo_queues (state=0x555556680b50) at wsi/wsi_common_x11.c:936
#4 0x00007ffff747608a in start_thread () from /usr/lib/libpthread.so.0
#5 0x00007ffff68c424f in clone () from /usr/lib/libc.so.6
Version: git