summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/SpawnProcess.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/pym/_emerge/SpawnProcess.py b/pym/_emerge/SpawnProcess.py
index 5d0fcf6dd..9c754add5 100644
--- a/pym/_emerge/SpawnProcess.py
+++ b/pym/_emerge/SpawnProcess.py
@@ -76,8 +76,14 @@ class SpawnProcess(SubProcess):
else:
# Create a dummy pipe so the scheduler can monitor
- # the process from inside a poll() loop.
- fd_pipes[self._dummy_pipe_fd] = slave_fd
+ # the process from inside a poll() loop. Ensure that
+ # it doesn't interfere with a random fd that's already
+ # in fd_pipes though (as least FileDigester can pass
+ # in a random fd returned from os.pipe()).
+ unique_dummy_fd = self._dummy_pipe_fd
+ while unique_dummy_fd in fd_pipes:
+ unique_dummy_fd += 1
+ fd_pipes[unique_dummy_fd] = slave_fd
if self.background:
fd_pipes[1] = slave_fd
fd_pipes[2] = slave_fd