[request-sponsor] telnet(1) cannot handle more than 15 fds
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
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
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
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
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
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