diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-02-14 04:29:02 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-02-14 04:29:02 -0800 |
commit | a75341bf3a66f75edd68d1a8bc5efdb51c0c0740 (patch) | |
tree | 731f6f1bb4840d83b128d4401b052a8377818961 /pym/_emerge/AsynchronousTask.py | |
parent | fe3960b69c326bc779bdf5ec34d56630b3e188ae (diff) | |
download | portage-a75341bf3a66f75edd68d1a8bc5efdb51c0c0740.tar.gz portage-a75341bf3a66f75edd68d1a8bc5efdb51c0c0740.tar.bz2 portage-a75341bf3a66f75edd68d1a8bc5efdb51c0c0740.zip |
After python fork, don't close fds for PyPy 1.8.
If we close all open file descriptors after a fork, with PyPy 1.8 it
triggers "[Errno 9] Bad file descriptor" later in the subprocess.
Apparently it is holding references to file descriptors and closing
them after they've already been closed and re-opened for other
purposes. As a workaround, we don't close the file descriptors, so
that they won't be re-used and therefore we won't be vulnerable to this
kind of interference.
The obvious caveat of not closing the fds is that the subprocess can
hold locks that belonged to the parent process, even after the parent
process has released the locks. Hopefully this won't be a major problem
though, since the subprocess has to exit at release the lock
eventually, when the EbuildFetcher or _MergeProcess task is complete.
Diffstat (limited to 'pym/_emerge/AsynchronousTask.py')
0 files changed, 0 insertions, 0 deletions