[distcc] Problem with zeroconf daemonization

Benjamin R. Haskell distcc at benizi.com
Mon Jan 18 08:19:10 MST 2010


On Mon, 18 Jan 2010, Lennart Poettering wrote:

> On Mon, 18.01.10 01:10, Benjamin R. Haskell (distcc at benizi.com) wrote:
> 
> > If so, it seems like a pretty easy fix (to just close more fd's than 
> > 0,  1, and 2).  I can commit the attached patch if 1024 doesn't seem 
> > too  magic-number-y (and I'm not spouting nonsense).
> 
> Uh, hardcoding the 1024 is not a good idea. And always looping up to 
> RLIMIT_NOFILE or _SC_OPEN_MAX is actually kinda slow. Looping through 
> /proc/self/fd/ should be the fastest way to close all those fds.

Yeah, sorry all, should've added <sarcasm> tags w/ actually-using 1024.  
That said, it's not clear what the best alternative is.

In some one-off thing I wrote I used:

#include <linux/limits.h>
for (fd = 0; fd < NR_OPEN; fd++) close(fd);

But, obviously that's Linux-specific.  And as Lennart points out, it can 
be slow. (didn't notice w/ what I used it for)


How universal is /proc/self/fd/?


> Might be an idea to simply copy this function:
> 
> http://git.0pointer.de/?p=libdaemon.git;a=blob;f=libdaemon/dfork.c;h=70fce862894ba16d66127d10547799aaa045fad4;hb=refs/heads/master#l485

Sure, modulo portability of /proc/self/fd/.  Or is the Avahi stuff the 
limiting factor in portability anyway?  (no slight intended -- just 
curious -- it would surprise me if it were)


Either way, though, there seems to be agreement that this is a 'distcc' 
problem and not a 'paludis' problem?

Best,
Ben


More information about the distcc mailing list