[vte291] Backport upstream patch to fix zombie shells (GNOME #740929)

Debarshi Ray rishi at fedoraproject.org
Mon Dec 1 13:20:48 UTC 2014


commit 73a2eab3a0699a8681d0830dfccc7ed0c9359119
Author: Debarshi Ray <debarshir at gnome.org>
Date:   Mon Dec 1 14:16:25 2014 +0100

    Backport upstream patch to fix zombie shells (GNOME #740929)

 ...ot-leave-behind-a-zombie-child-when-closi.patch |   48 ++++++++++++++++++++
 vte291.spec                                        |   12 ++++-
 2 files changed, 57 insertions(+), 3 deletions(-)
---
diff --git a/0001-widget-Do-not-leave-behind-a-zombie-child-when-closi.patch b/0001-widget-Do-not-leave-behind-a-zombie-child-when-closi.patch
new file mode 100644
index 0000000..1f7ead0
--- /dev/null
+++ b/0001-widget-Do-not-leave-behind-a-zombie-child-when-closi.patch
@@ -0,0 +1,48 @@
+From eaaffc7508765ceb54e648e6fd2f31bc9969846b Mon Sep 17 00:00:00 2001
+From: Egmont Koblinger <egmont at gmail.com>
+Date: Mon, 1 Dec 2014 13:30:52 +0100
+Subject: [PATCH] widget: Do not leave behind a zombie child when closing a
+ terminal
+
+https://bugzilla.gnome.org/show_bug.cgi?id=740929
+---
+ src/vte.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/vte.c b/src/vte.c
+index c6172fc..e5149c9 100644
+--- a/src/vte.c
++++ b/src/vte.c
+@@ -3210,6 +3210,12 @@ vte_terminal_child_watch_cb(GPid pid,
+                             int status,
+                             VteTerminal *terminal)
+ {
++	if (terminal == NULL) {
++		/* The child outlived VteTerminal. Do nothing, we're happy that Glib
++		 * read its exit data and hence it's no longer there as zombie. */
++		return;
++	}
++
+ 	if (pid == terminal->pvt->pty_pid) {
+                 GObject *object = G_OBJECT(terminal);
+ 
+@@ -8416,11 +8422,15 @@ vte_terminal_finalize(GObject *object)
+ 		terminal->pvt->outgoing_conv = VTE_INVALID_CONV;
+ 	}
+ 
+-	/* Stop listening for child-exited signals. */
++	/* Start listening for child-exited signals and ignore them, so that no zombie child is left behind. */
+         if (terminal->pvt->child_watch_source != 0) {
+                 g_source_remove (terminal->pvt->child_watch_source);
+                 terminal->pvt->child_watch_source = 0;
+         }
++        g_child_watch_add_full(G_PRIORITY_HIGH,
++                               terminal->pvt->pty_pid,
++                               (GChildWatchFunc)vte_terminal_child_watch_cb,
++                               NULL, NULL);
+ 
+ 	/* Stop processing input. */
+ 	vte_terminal_stop_processing (terminal);
+-- 
+2.1.0
+
diff --git a/vte291.spec b/vte291.spec
index b68a230..4ef06dc 100644
--- a/vte291.spec
+++ b/vte291.spec
@@ -2,14 +2,16 @@
 
 Name:           vte291
 Version:        0.39.0
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Terminal emulator library
 
 License:        LGPLv2+
 URL:            http://www.gnome.org/
 Source0:        http://download.gnome.org/sources/vte/0.39/vte-%{version}.tar.xz
 # https://bugzilla.gnome.org/show_bug.cgi?id=688456
-Patch2:         0001-widget-Only-show-the-cursor-on-motion-if-moved.patch
+Patch0:         0001-widget-Only-show-the-cursor-on-motion-if-moved.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=740929
+Patch1:         0001-widget-Do-not-leave-behind-a-zombie-child-when-closi.patch
 
 BuildRequires:  gettext
 BuildRequires:  gobject-introspection-devel
@@ -50,7 +52,8 @@ emulator library.
 
 %prep
 %setup -q -n vte-%{version}
-%patch2 -p1 -b .motion
+%patch0 -p1 -b .motion
+%patch1 -p1 -b .zombie
 
 %build
 CFLAGS="%optflags -fPIE -DPIE" \
@@ -96,6 +99,9 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
 %{_sysconfdir}/profile.d/vte.sh
 
 %changelog
+* Mon Dec 01 2014 Debarshi Ray <rishi at fedoraproject.org> - 0.39.0-2
+- Backport upstream patch to fix zombie shells (GNOME #740929)
+
 * Tue Nov 25 2014 Kalev Lember <kalevlember at gmail.com> - 0.39.0-1
 - Update to 0.39.0
 


More information about the scm-commits mailing list