From 73a2eab3a0699a8681d0830dfccc7ed0c9359119 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Mon, 1 Dec 2014 14:16:25 +0100 Subject: [PATCH] Backport upstream patch to fix zombie shells (GNOME #740929) --- ...ave-behind-a-zombie-child-when-closi.patch | 48 +++++++++++++++++++ vte291.spec | 12 +++-- 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 0001-widget-Do-not-leave-behind-a-zombie-child-when-closi.patch 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 +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 - 0.39.0-2 +- Backport upstream patch to fix zombie shells (GNOME #740929) + * Tue Nov 25 2014 Kalev Lember - 0.39.0-1 - Update to 0.39.0