8.205. spice-server

Updated spice-server packages that fix a number of bugs and add various enhancements are now available for Red Hat Enterprise Linux 6.

The Simple Protocol for Independent Computing Environments (SPICE) is a remote display protocol for virtual environments. SPICE users can access a virtualized desktop or server from the local system or any system with network access to the server. SPICE is used in Red Hat Enterprise Linux for viewing virtualized guests running on the Kernel-based Virtual Machine (KVM) hypervisor or on Red Hat Enterprise Virtualization Hypervisors.

Note

The spice-server packages have been upgraded to upstream version 0.12.4, which provides a number of bug fixes and enhancements over the previous version. (BZ#952671)

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-subject option 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-subject option 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 getaddrinfo().

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_MIGRATE message. This is not allowed and the client thus forwarded a wrong message instead of a MSG_MIGRATE_DATA message 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_DATA message can be sent after sending MSG_MIGRATE and 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.

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.

All spice-server users are advised to upgrade to these updated packages, which fix these bugs and add these enhancements.