- Previously, the SPICE server assumed that the SPICE client was connected until it became disconnected. However, when the client became unresponsive, or did not disconnect explicitly, the server kept trying to communicate with it. Consequently, queues, such as a driver commands ring, filled up, and the guest display driver hung. With this update, the SPICE server monitors if the client is responsive and disconnect if it is not.
- Previously, pending data from the client were cleaned inappropriately. As a consequence, QEMU could terminate unexpectedly when a VM was rebooting while being migrated. This update ensures that the pending client data are cleaned appropriately, and QEMU crashes no longer occur.
- Prior to this update, the SPICE server used exclusively Transport Layer Security (TLS) version 1.0 for encrypted connections no matter what version(s) the client advertised. Consequently, the SPICE client could not use newer versions of TLS. To fix this bug, the SPICE server code has been changed to allow for TLS 1.0 and above, and clients can now connect using TLS version 1.0 or newer.
- Due to an integer overflow on a 32 bit timer value, infinite loop in the SPICE server on long running VMs longer than 46 days caused SPICE sessions to become unresponsive. Where appropriate, 64 bit timer values are now used, and SPICE sessions no longer crash.
- Due to invalid assertion in the video streaming code, the SPICE hypervisor could terminate unexpectedly when the assert was triggered. The following error message was returned in the log file:qemu sometimes crashes in spice-server with "rate_control->num_recent_enc_frames" assertionThe invalid assertion has been fixed, and the hypervisor no longer crashes.