From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org)
	by finch.gentoo.org with esmtp (Exim 4.60)
	(envelope-from <gentoo-commits+bounces-408539-garchives=archives.gentoo.org@lists.gentoo.org>)
	id 1Rag6w-0000tY-Vx
	for garchives@archives.gentoo.org; Wed, 14 Dec 2011 04:06:31 +0000
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 8BF3F21C066;
	Wed, 14 Dec 2011 04:06:23 +0000 (UTC)
Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183])
	by pigeon.gentoo.org (Postfix) with ESMTP id 5439D21C066
	for <gentoo-commits@lists.gentoo.org>; Wed, 14 Dec 2011 04:06:23 +0000 (UTC)
Received: from pelican.gentoo.org (unknown [66.219.59.40])
	(using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id A15841B402B
	for <gentoo-commits@lists.gentoo.org>; Wed, 14 Dec 2011 04:06:22 +0000 (UTC)
Received: from localhost.localdomain (localhost [127.0.0.1])
	by pelican.gentoo.org (Postfix) with ESMTP id 157528004A
	for <gentoo-commits@lists.gentoo.org>; Wed, 14 Dec 2011 04:06:22 +0000 (UTC)
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" <zmedico@gentoo.org>
Message-ID: <9fa915eef028c96b8cde3876fb8bb299c03f9a62.zmedico@gentoo>
Subject: [gentoo-commits] proj/portage:master commit in: bin/
X-VCS-Repository: proj/portage
X-VCS-Files: bin/ebuild-ipc.py
X-VCS-Directories: bin/
X-VCS-Committer: zmedico
X-VCS-Committer-Name: Zac Medico
X-VCS-Revision: 9fa915eef028c96b8cde3876fb8bb299c03f9a62
Date: Wed, 14 Dec 2011 04:06:22 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: quoted-printable
X-Archives-Salt: 32e37d1e-a3d6-4503-abb1-8c0186adfe6e
X-Archives-Hash: 30b750c77a514bde9e9d4aff3b879a27

commit:     9fa915eef028c96b8cde3876fb8bb299c03f9a62
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 14 04:06:10 2011 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Dec 14 04:06:10 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a=
=3Dcommit;h=3D9fa915ee

ebuils-ipc.py: _exit in finally block after fork

---
 bin/ebuild-ipc.py |   38 +++++++++++++++++++++++++++-----------
 1 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index 68ad985..372585f 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -13,6 +13,7 @@ import select
 import signal
 import sys
 import time
+import traceback
=20
 def debug_signal(signum, frame):
 	import pdb
@@ -228,14 +229,22 @@ class EbuildIpc(object):
 		pid =3D os.fork()
=20
 		if pid =3D=3D 0:
-			os.close(pr)
-
-			# File streams are in unbuffered mode since we do atomic
-			# read and write of whole pickles.
-			output_file =3D open(self.ipc_in_fifo, 'wb', 0)
-			output_file.write(pickle.dumps(args))
-			output_file.close()
-			os._exit(os.EX_OK)
+			retval =3D 1
+			try:
+				os.close(pr)
+
+				# File streams are in unbuffered mode since we do atomic
+				# read and write of whole pickles.
+				output_file =3D open(self.ipc_in_fifo, 'wb', 0)
+				output_file.write(pickle.dumps(args))
+				output_file.close()
+				retval =3D os.EX_OK
+			except SystemExit:
+				raise
+			except:
+				traceback.print_exc()
+			finally:
+				os._exit(retval)
=20
 		os.close(pw)
=20
@@ -258,9 +267,16 @@ class EbuildIpc(object):
 		pid =3D os.fork()
=20
 		if pid =3D=3D 0:
-			os.close(pr)
-			retval =3D self._receive_reply(input_fd)
-			os._exit(retval)
+			retval =3D 1
+			try:
+				os.close(pr)
+				retval =3D self._receive_reply(input_fd)
+			except SystemExit:
+				raise
+			except:
+				traceback.print_exc()
+			finally:
+				os._exit(retval)
=20
 		os.close(pw)
 		retval =3D self._wait(pid, pr, portage.localization._('during read'))