-
Lukas Straub authored
The chr_out chardev is connected to a filter-redirector running in the main loop. qemu_chr_fe_write_all might block here in compare_chr_send if the (socket-)buffer is full. If another filter-redirector in the main loop want's to send data to chr_pri_in it might also block if the buffer is full. This leads to a deadlock because both event loops get blocked. Fix this by converting compare_chr_send to a coroutine and putting the packets in a send queue. Signed-off-by:
Lukas Straub <lukasstraub2@web.de>
Reviewed-by:
Zhang Chen <chen.zhang@intel.com>
Tested-by:
Zhang Chen <chen.zhang@intel.com>
Signed-off-by:
Zhang Chen <chen.zhang@intel.com>
Signed-off-by:
Jason Wang <jasowang@redhat.com>Lukas Straub authoredThe chr_out chardev is connected to a filter-redirector running in the main loop. qemu_chr_fe_write_all might block here in compare_chr_send if the (socket-)buffer is full. If another filter-redirector in the main loop want's to send data to chr_pri_in it might also block if the buffer is full. This leads to a deadlock because both event loops get blocked. Fix this by converting compare_chr_send to a coroutine and putting the packets in a send queue. Signed-off-by:
Lukas Straub <lukasstraub2@web.de>
Reviewed-by:
Zhang Chen <chen.zhang@intel.com>
Tested-by:
Zhang Chen <chen.zhang@intel.com>
Signed-off-by:
Zhang Chen <chen.zhang@intel.com>
Signed-off-by:
Jason Wang <jasowang@redhat.com>
Loading