diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-11-13 09:16:08 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-11-23 18:02:20 -0800 |
commit | 44f8dd33065d30449010d59e12ab6d0a403c22c4 (patch) | |
tree | 01c7dc2b7ebb79284a11e5eeeacb830b27df0f0b | |
parent | faeeabc80c83c586c295ca856cc4f8d73c9d03ae (diff) | |
download | portage-44f8dd33065d30449010d59e12ab6d0a403c22c4.tar.gz portage-44f8dd33065d30449010d59e12ab6d0a403c22c4.tar.bz2 portage-44f8dd33065d30449010d59e12ab6d0a403c22c4.zip |
MergeProcess: suppress finally blocks after fork
This case is like bug #345289.
-rw-r--r-- | pym/portage/dbapi/_MergeProcess.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/pym/portage/dbapi/_MergeProcess.py b/pym/portage/dbapi/_MergeProcess.py index b5af7142c..3cf50d22b 100644 --- a/pym/portage/dbapi/_MergeProcess.py +++ b/pym/portage/dbapi/_MergeProcess.py @@ -1,6 +1,8 @@ # Copyright 2010 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 +import traceback + import portage from portage import os from _emerge.SpawnProcess import SpawnProcess @@ -35,7 +37,15 @@ class MergeProcess(SpawnProcess): # is triggered when dblink._scheduler is None. self.dblink._scheduler = None - rval = self.dblink._merge_process(self.srcroot, self.destroot, - self.cfgfiledict, self.conf_mem_file) - - os._exit(rval) + rval = 1 + try: + rval = self.dblink._merge_process(self.srcroot, self.destroot, + self.cfgfiledict, self.conf_mem_file) + except SystemExit: + raise + except: + traceback.print_exc() + finally: + # Call os._exit() from finally block, in order to suppress any + # finally blocks from earlier in the call stack. See bug #345289. + os._exit(rval) |