- Data accessed from the main thread, which use most SPICE channels, could be accessed by threads of other channels, such as display and cursor channels. To protect the data, an assertion check has been added to the SPICE code. However, certain calls to the sound channel interface use the Virtual CPU (vCPU) thread. Previously, these calls were rejected by the assertion check causing the SPICE server and the Kernel-based Virtual Machine (KVM) hypervisor to abort. Such calls are harmless because KVM uses global mutual exclusion (mutex) for the vCPU and I/O threads. With this update, a warning is returned instead of aborting SPICE and KVM.
- When the
client_migrate_info()function was called with the
cert-host-subjectoption specified and then was called without the option, on the third call, the option was freed for the second time. This was because the pointer was not set to NULL after it was first freed during the second call. This behavior caused the SPICE server to terminate unexpectedly with a segmentation fault. The underlying source code has been modified and the pointer is set to NULL when the
cert-host-subjectoption is not specified. As a result, the pointer is freed only once and SPICE no longer crashes in the described scenario.
- When two items were to be sent to a client and the client became disconnected, the first item was cleared successfully but the second one was not. Consequently, the SPICE server terminated unexpectedly due an assertion check failure. This update applies a patch to fix this bug so that the second item is now properly cleared, too. As a result, the SPICE server no longer crashes in the described scenario.
- Due to a bug in the SPICE source code, an attempt to run the
getaddrinfo()function failed with a segmentation fault. Consequently, Quick Emulator (QEMU) terminated unexpectedly. The underlying source code has been modified and QEMU no longer crashes when executing
- When the SPICE source server was streaming video data during a migration process, the SPICE server could send stream-related messages to the SPICE client after sending a
MSG_MIGRATEmessage. This is not allowed and the client thus forwarded a wrong message instead of a
MSG_MIGRATE_DATAmessage to the destination host. The destination host then aborted the migration. This update modifies the SPICE server code to ensure that only the
MSG_MIGRATE_DATAmessage can be sent after sending
MSG_MIGRATEand the migration process now successfully finish.
- Previously, the SPICE server did not allow creation of a surface with the “stride >= 0” path because the path was untested and it was not requested before by any QXL driver. Consequently, when a QXL driver attempted to create such a surface, SPICE terminated unexpectedly with an error on certain systems. The underlying source code has been modified to allow creation of the surface with the “stride >= 0” path. As a result, the SPICE server no longer crashes in the described scenario.
- Under certain circumstances, the SPICE server could abort upon a virtual machine (VM) migration. This could happen if the VM was being migrated to a new host after the previous migration to the current host within the same SPICE client session. Then, if the connection between the original host and the client was a low bandwidth connection, the new host passed an incorrect connection bandwidth value to the SPICE client causing the SPICE server to abort. This update provides a patch addressing this problem and the SPICE server now sends the correct connection bandwidth value in this scenario.
- Previously, the destination host did not send its multi-media time to a client during migration so that the client held the multi-media time of the source server. As a consequence, if the source and destination hosts had different multi-media time and no audio playback, video frames that were created after the migration were dropped by the client. This update applies a patch to fix this bug and video frames are no longer dropped in the described scenario.
- Previously, an incorrect flag that was set when sending bitmaps caused an endless loop in the client display channel. This behavior occurred especially under limited bandwidth conditions. Consequently, the SPICE server could become unresponsive. The underlying source code has been modified to fix this bug and SPICE no longer hangs in such a situation.
- Previously, the waiting timeout period for a client response was set to 150 seconds. This duration was too long and caused, under certain circumstances, server errors to be returned. With this update, the waiting timeout period was set to 30 seconds to prevent the server errors from occurring.
- With this enhancement, support for the new QEMU
disable-agent-file-transferoption has been provided. As a result, users can now filter out the file transfer messages.
- This update introduces the adaptive video streaming that provides better video quality. With this feature, the network bandwidth and latency are estimated and the video bit-rate and the playback latency are dynamically adjusted. Moreover, the bandwidth and latency estimations of past video playback are used for improving the initial parameters setting of future video playbacks.