When the display/cursor channel disconnect, channel_event (qemu/ui/spice_core.c) attempts to lock the iothread (see qemu patch "spice: workaround a spice server bug"). However, when refactoring spice-server channels to use RedChannel and to support multiple clients, the disconnection of the display/cursor channel via red_dispatcher was change to be synchronous. Thus, when the disconnection of the display/cursor channel is triggered from the iothread, deadlock occurs, and qemu is stack.
I think this is long solved by the introduction of async io, closing
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.