diff --git a/virt-manager.changes b/virt-manager.changes index a7dde719..0806102c 100644 --- a/virt-manager.changes +++ b/virt-manager.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Aug 29 15:41:17 MDT 2013 - carnold@suse.com + +- Fix a segfault when the connection is dropped + virtman-dropped-connection-segfault.patch + ------------------------------------------------------------------- Thu Jul 25 11:34:07 MDT 2013 - carnold@suse.com diff --git a/virt-manager.spec b/virt-manager.spec index 8fbd6fbf..9d429c7d 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -33,6 +33,7 @@ Version: 0.9.5 Release: 0 Url: http://virt-manager.et.redhat.com Source0: virt-manager-%{version}.tar.bz2 +Patch0: virtman-dropped-connection-segfault.patch Patch50: virtman-desktop.patch Patch51: virtman-cdrom.patch Patch52: virtman-kvm.patch @@ -100,6 +101,7 @@ Authors: %prep %setup -q +%patch0 -p1 %patch50 -p1 %patch51 -p1 %patch52 -p1 diff --git a/virtman-dropped-connection-segfault.patch b/virtman-dropped-connection-segfault.patch new file mode 100644 index 00000000..9f225af2 --- /dev/null +++ b/virtman-dropped-connection-segfault.patch @@ -0,0 +1,25 @@ + +Subject: Fix a segfault when the connection is dropped +From: Giuseppe Scrivano gscrivano@gnu.org Mon Mar 11 09:21:48 2013 +0100 +Date: Wed Apr 3 18:14:01 2013 -0400: +Git: 823c3b20b598c6c718be381139cfc16f93443686 + +The error dialog window was created on the "tick" thread, causing a +crash in GTK. Fix it by moving its invocation to the main thread. + +Index: virt-manager-0.9.5/src/virtManager/engine.py +=================================================================== +--- virt-manager-0.9.5.orig/src/virtManager/engine.py ++++ virt-manager-0.9.5/src/virtManager/engine.py +@@ -310,8 +310,9 @@ class vmmEngine(vmmGObject): + logging.debug("Closing connection since libvirtd " + "appears to have stopped") + else: +- self.err.show_err(_("Error polling connection '%s': %s") % +- (conn.get_uri(), e)) ++ error_msg = _("Error polling connection '%s': %s") \ ++ % (conn.get_uri(), e) ++ self.idle_add(lambda: self.err.show_err(error_msg)) + + self.idle_add(conn.close) + diff --git a/virtman-vminstall.patch b/virtman-vminstall.patch index 25c4c410..ddda7861 100644 --- a/virtman-vminstall.patch +++ b/virtman-vminstall.patch @@ -118,7 +118,7 @@ Index: virt-manager-0.9.5/src/virtManager/engine.py from virtManager.host import vmmHost from virtManager.error import vmmErrorDialog from virtManager.systray import vmmSystray -@@ -634,6 +634,7 @@ class vmmEngine(vmmGObject): +@@ -635,6 +635,7 @@ class vmmEngine(vmmGObject): obj.connect("action-show-vm", self._do_show_vm) obj.connect("action-show-preferences", self._do_show_preferences) obj.connect("action-show-create", self._do_show_create) @@ -126,7 +126,7 @@ Index: virt-manager-0.9.5/src/virtManager/engine.py obj.connect("action-show-help", self._do_show_help) obj.connect("action-show-about", self._do_show_about) obj.connect("action-show-host", self._do_show_host) -@@ -677,11 +678,50 @@ class vmmEngine(vmmGObject): +@@ -678,11 +679,50 @@ class vmmEngine(vmmGObject): self.windowCreate = obj return self.windowCreate