On Thu, 26 Jan 2017 16:05:47 -0800 Zac Medico <zmed...@gentoo.org> wrote:
> On 01/25/2017 04:21 PM, Zac Medico wrote: > > Make spawn force instantiation of portage.data.userpriv_groups in > > the main process, in order to avoid redundant instantiation in child > > processes. This mitigates the impact of "Bad file descriptor" errors > > reported in bug 582098, by avoiding redundant instantiation of > > userpriv_groups in child processes. It may even solve the problem > > completely, if the "Bad file descriptor" errors are triggered by > > interactions between garbage collection and the file descriptor > > operations performed in the _exec function by the _setup_pipes call. > > > > X-Gentoo-Bug: 582098 > > X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=582098 > > --- > > pym/portage/process.py | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/pym/portage/process.py b/pym/portage/process.py > > index ba41ea8..bc4efb5 100644 > > --- a/pym/portage/process.py > > +++ b/pym/portage/process.py > > @@ -305,6 +305,10 @@ def spawn(mycommand, env={}, opt_name=None, > > fd_pipes=None, returnpid=False, if unshare_net or unshare_ipc: > > find_library("c") > > > > + # Force instantiation of portage.data.userpriv_groups > > before the > > + # fork, so that the result is cached in the main process. > > + bool(groups) > > + > > parent_pid = os.getpid() > > pid = None > > try: > > > > Pushed: > > https://gitweb.gentoo.org/proj/portage.git/commit/?id=ccf975296daec92d376c4989e5ffb2a6cdbe8a2d Sorry, it's been hard to keep up with email last few days, but yeah, this is a trivial patch. I know it's been a bastard to track down the source of the problem. Thanks -- Brian Dolbec <dolsen>