[request-sponsor] telnet(1) cannot handle more than 15 fds

2006-05-02 Thread James Carlson
Chris Elving writes:
> Due to the 32-bit ABI's stdio file descriptor limit, an interposer is
> being used to F_DUPFD non-stdio file descriptors to 256 and above. This
> mitigates a problem with 3rd party modules and plugins that use
> fopen(3C), et al. streams in processes such as Apache HTTP Server that
> open a large number of file descriptors. Unfortunately, using the
> interposer causes failures when a child process (e.g. CGI program)
> subsequently invokes telnet(1). If telnet passed the correct nfds value
> to select(3C), that failure would be eliminated.

Thanks!  That's the key piece I was missing.

In that case, I suspect that closefrom() won't fix the problem, as the
socket() call will return a descriptor that's above the limit and run
into the problem again.

-- 
James Carlson, KISS Network
Sun Microsystems / 1 Network Drive 71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677



[request-sponsor] telnet(1) cannot handle more than 15 fds

2006-05-02 Thread Chris Elving
James Carlson wrote:

> But the bigger question is why this is needed.  It'd have to be some
> situation in which telnet was exec'd with the first 16 descriptors
> already open.  Does that happen?

Due to the 32-bit ABI's stdio file descriptor limit, an interposer is
being used to F_DUPFD non-stdio file descriptors to 256 and above. This
mitigates a problem with 3rd party modules and plugins that use
fopen(3C), et al. streams in processes such as Apache HTTP Server that
open a large number of file descriptors. Unfortunately, using the
interposer causes failures when a child process (e.g. CGI program)
subsequently invokes telnet(1). If telnet passed the correct nfds value
to select(3C), that failure would be eliminated.

> Could you file a bug first?

I submitted a bug report through
https://www.opensolaris.org/bug/report.jspa before mailing
request-sponsor at opensolaris.org, but I don't believe a corresponding CR
was opened.




[request-sponsor] telnet(1) cannot handle more than 15 fds

2006-05-02 Thread James Carlson
Jonathan Adams writes:
> Couldn't you just start main() with:
> 
>   closefrom(3);
> 
> to close any extra file descriptors?

Yes, that'd be much better.

-- 
James Carlson, KISS Network
Sun Microsystems / 1 Network Drive 71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677



[request-sponsor] Revive UltraSPARC I support

2006-05-02 Thread Peter Dennis - Solaris Sustaining Engineering
Hello Rainer,

Thanks for submitting the request to revive the UltraSPARC I
support. Rather than integrating this into the ON consolidation
due to engineering constraints (see below), the best way forward
is for this support to be maintained either by yourself
and/or an interested team of OpenSolaris folks as an OpenSolaris
project. This would be hosted on the www.opensolaris.org website.
Have a read of http://www.opensolaris.org/os/communities/ as a
starting point for this; posting to the
 opensolaris-discuss at opensolaris.org
would be the point to start the ball rolling for the project.

Supporting old hardware from an engineering perspective is non
trivial. The reasons being that the older hardware may not actually
support the newer facilities within ON, for example the FMA
framework and dtrace or they may support it in some limited fashion
and thus cause exceptions within the code base. Having the older
hardware would increase the test matrix and as such increase the
time it takes for the tests to complete. Maintaining that many
old machines/systems may also prove to be unreasonable (thinking
about hardware failures here).

Cheers
pete

Assitant Tech Lead for Nevada



[request-sponsor] telnet(1) cannot handle more than 15 fds

2006-05-02 Thread James Carlson
Chris Elving writes:
> I'm seeking a sponsor for the following change to 
> /usr/src/cmd/cmd-inet/usr.bin/telnet/sys_bsd.c for telnet(1):
[...]
> +   int nfds = 0;

Since we know that tin and tout are 0 and 1 (fixed), the whole thing
can likely be reduced to just:

> -   if ((c = select(16, &ibits, &obits, &xbits,
> +   if ((c = select(net + 1, &ibits, &obits, &xbits,

But the bigger question is why this is needed.  It'd have to be some
situation in which telnet was exec'd with the first 16 descriptors
already open.  Does that happen?

Could you file a bug first?

-- 
James Carlson, KISS Network
Sun Microsystems / 1 Network Drive 71.232W   Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757   42.496N   Fax +1 781 442 1677



[request-sponsor] telnet(1) cannot handle more than 15 fds

2006-05-02 Thread Jonathan Adams
On Tue, May 02, 2006 at 09:43:00AM -0400, James Carlson wrote:
> Chris Elving writes:
> > I'm seeking a sponsor for the following change to 
> > /usr/src/cmd/cmd-inet/usr.bin/telnet/sys_bsd.c for telnet(1):
> [...]
> > +   int nfds = 0;
> 
> Since we know that tin and tout are 0 and 1 (fixed), the whole thing
> can likely be reduced to just:
> 
> > -   if ((c = select(16, &ibits, &obits, &xbits,
> > +   if ((c = select(net + 1, &ibits, &obits, &xbits,
> 
> But the bigger question is why this is needed.  It'd have to be some
> situation in which telnet was exec'd with the first 16 descriptors
> already open.  Does that happen?

Couldn't you just start main() with:

closefrom(3);

to close any extra file descriptors?

Cheers,
- jonathan

-- 
Jonathan Adams, Solaris Kernel Development