diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-10-08 07:54:14 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-10-08 07:54:14 -0700 |
commit | 84ce763b5d397dc836b7132c0961d8f2b1a2d1f1 (patch) | |
tree | 4ccd744d2783835cb054d3ff822d1256f6c0cf17 | |
parent | a0adfb21ec64da8013265adfb2ed9ffb18e6a2b4 (diff) | |
download | portage-84ce763b5d397dc836b7132c0961d8f2b1a2d1f1.tar.gz portage-84ce763b5d397dc836b7132c0961d8f2b1a2d1f1.tar.bz2 portage-84ce763b5d397dc836b7132c0961d8f2b1a2d1f1.zip |
spawn: use finally block for failure os._exit()
Also, use writemsg for unicode safety.
-rw-r--r-- | pym/portage/process.py | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/pym/portage/process.py b/pym/portage/process.py index 32e60ac50..a3461f474 100644 --- a/pym/portage/process.py +++ b/pym/portage/process.py @@ -15,7 +15,7 @@ from portage import _encodings from portage import _unicode_encode import portage portage.proxy.lazyimport.lazyimport(globals(), - 'portage.util:dump_traceback', + 'portage.util:dump_traceback,writemsg', ) from portage.const import BASH_BINARY, SANDBOX_BINARY, FAKEROOT_BINARY @@ -268,9 +268,12 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, # We need to catch _any_ exception so that it doesn't # propagate out of this function and cause exiting # with anything other than os._exit() - sys.stderr.write("%s:\n %s\n" % (e, " ".join(mycommand))) + writemsg("%s:\n %s\n" % (e, " ".join(mycommand)), noiselevel=-1) traceback.print_exc() sys.stderr.flush() + 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(1) if not isinstance(pid, int): |