Description of problem: If you edit a KVM guest and change <graphics type='vnc'.../> to <graphics type='rdp' autoport='yes' multiUser='yes'/>, attempting to start the guest gives: [root@mbooth ~]# virsh start Etch error: Failed to start domain Etch error: Failure while reading monitor startup output: Connection reset by peer (and an SELinux denial, separate BZ) Attempting to start it subsequent times gives the more revealing message: [root@mbooth ~]# virsh start Etch error: Failed to start domain Etch error: internal error unable to start guest: char device redirected to /dev/pts/2 Could not initialize SDL - exiting (and the same SELinux denial). I understand that RDP is not supported on KVM. This should give an informative error message rather than falling back to SDL. Version-Release number of selected component (if applicable): libvirt-0.7.1-11.fc11.x86_64 (virt-preview on F-11)
Okay, the problem is we do: if (!def->graphics) ADD_ARG_LIT("-nographic"); if ((def->ngraphics == 1) && def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) { ... ADD_ARG_LIT("-vnc"); ... } else if ((def->ngraphics == 1) && def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) { } so, the result is that if you specify multiple graphics backends or a backend other than VNC or SDL, then we don't pass any graphics related switch to qemu and it defaults to SDL Move to upstream bug tracker; if there was an upstream fix, we'd probably cherry-pick into Fedora, but in the absence of that it's probably not worth tracking specifically for Fedora
I have a patch that's not upstream, that includes the following extra chunk @@ -2146,6 +2152,9 @@ int qemudBuildCommandLine(virConnectPtr */ ADD_ENV_COPY("QEMU_AUDIO_DRV"); ADD_ENV_COPY("SDL_AUDIODRIVER"); + } else if (def->ngraphics) { + qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR, + "%s", _("unsupported graphics output requested")); } this would avoid the problem seen here.
This has been fixed upstream for a long time