diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-11-13 09:16:08 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-11-13 09:16:08 -0800 |
commit | f456171f1fee81734b5e214488c8b86bec842d1a (patch) | |
tree | 46b658cbeebd59933652db5384bf53577910015e | |
parent | 475b2c19abf9911c7d104ac9b40e366fccafd7a3 (diff) | |
download | portage-f456171f1fee81734b5e214488c8b86bec842d1a.tar.gz portage-f456171f1fee81734b5e214488c8b86bec842d1a.tar.bz2 portage-f456171f1fee81734b5e214488c8b86bec842d1a.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) |