Bug: INN 2.2.1, Linux 2.2, getfdcount()

Russ Allbery rra at stanford.edu
Thu Jun 22 06:56:55 UTC 2000

Ray Rocker <rocker at datasync.com> writes:

> This may more properly be a Linux bug but it has detrimental 
> effects on innd.

> Platform: Slackware Linux 4.0, kernel 2.2.6, INN 2.2.1 latest 
> stable snapshot.

> The configure script selects FDCOUNT_STYLE of SYSCONF. This causes
> getfdcount (getdtab.c) to use sysconf() to get the max number of file
> descriptors. But sysconf returns the wrong value of 256.  Linux 2.2
> actually allows 1024 fds per process.

> I have a setup where the number of cycbuffs plus the number of uniover
> files exceeds 256. When a new connection came in to innd, the fd was
> over 256. NCcreate creates a CHANNEL with garbage data, because the
> CHANtable has only been initialized to 256 elements. Boom! SIGSEGV.

> getrlimit() seems to be the only method which returns 1024 as the max
> number of fds. By changing config/config.data to use FDCOUNT_STYLE of
> GETRLIMIT and doing make & make update, I was able to get innd
> operational again.

Thanks for the report and sorry about the delay in responding to it.  I've
updated the CURRENT and BETA trees for the upcoming 2.3.0 release so that
they'll default to getrlimit() instead of sysconf().  I'm a little
hesitant to change the STABLE tree for 2.2.3 since this is the only report
we've had of this problem and I'm worried about accidentally destablizing
something else.

Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>

More information about the inn-bugs mailing list