Problem with 8.2.2-P5

Kevin Darcy kcd at daimlerchrysler.com
Thu Dec 23 01:49:56 UTC 1999


Solaris bug or not, is a coredump an appropriate way to deal with the resulting
error condition? How about detecting EINVAL and just exiting gracefully?

By the way, Solaris 7 appears to provide an alternate select() by the name of
select_large_fdset(), which is automatically substituted via a #pragma when
FD_SETSIZE exceeds 1024 (see Solaris 7 /usr/include/sys/select.h). They also claim
in their man page that the 64-bit version of select() defaults to a FD_SETSIZE of
65536.

So, maybe one workaround is to upgrade the OS. Failing that, just override the
select() routine with one that has a higher FD limit (even in Solaris 7, it's
still just a library routine layered on top of poll(), despite Sun's claims to
have fully integrated Berkeley-style sockets into their kernel).


- Kevin

P.S. Chris, I'm curious how you managed to gobble up 1024 file descriptors...

Mark.Andrews at iengines.com wrote:

>         Sun's select() has built in limit of FD_SETSIZE.  i.e. you
>         cannot raise it.  I consider this to be a bug in Sun's
>         implementation of select().
>
>         Mark
> >
> > Solaris 2.6, Sun ProC compilers v5.0, Ultra Enterprise 450, 1G RAM, 2x
> > Ultrasparc II processors.
> >
> > I've had named core on me with the following errors in logfiles:
> >
> >
> > 09-Dec-1999 08:37:36.611 insist: ns_main.c:537: INSIST(errno == EINTR): Inval
> > id argument failed.
> > 09-Dec-1999 09:58:29.029 insist: ns_main.c:537: INSIST(errno == EINTR): Inval
> > id argument failed.
> > 09-Dec-1999 10:44:22.207 insist: ns_main.c:537: INSIST(errno == EINTR): Inval
> > id argument failed.
> >
> >
> > Any ideas? Core is available, and the gdb where output is as follows:
> >
> > Core was generated by `/dns/sbin/named -c /dns/files/named.conf'.
> > Program terminated with signal 6, Abort.
> > Reading symbols from /usr/lib/libnsl.so.1...(no debugging symbols found)...
> > done.
> > Reading symbols from /usr/lib/libsocket.so.1...(no debugging symbols found)..
> > .
> > done.
> > Reading symbols from /usr/lib/libc.so.1...(no debugging symbols found)...done
> > .
> > Reading symbols from /usr/lib/libdl.so.1...(no debugging symbols found)...don
> > e.
> > Reading symbols from /usr/lib/libmp.so.2...(no debugging symbols found)...don
> > e.
> > Reading symbols from /usr/platform/SUNW,Ultra-4/lib/libc_psr.so.1...
> > (no debugging symbols found)...done.
> > #0  0xef688214 in __tbl_10_huge_digits ()
> > (gdb) where
> > #0  0xef688214 in __tbl_10_huge_digits ()
> > #1  0xef63a5d0 in addsev ()
> > #2  0x568c8 in ns_panic ()
> > #3  0x56960 in ns_assertion_failed ()
> > #4  0x3e39c in main ()
> > (gdb)
> >
> > There is a small history to this: named was recompiled in the hopes
> > of fixing a problem where zones would not be able to be loaded
> > after a named-xfer due to "resource temporarily unavailable" errors,
> > which leads me to believe that filehandles are involved.
> >
> > The INSTALL notes lead me to believe that Solaris 2.6+ doesn't need
> > any special handling for filehandles.
> >
> > When the newly compiled code (which did include a SET_FDSIZE directive)
> > was run, it produced the error above which prompted me to roll back
> > to the original binary.
> >
> > Thanks,
> >
> > Chris
> > --
> > Chris Saunderson             chris at optus.net.au
> > Technical Specialist         Ph:(02)9342 0848
> > Network Applications Centre  C&W Optus
> >
> --
> Mark Andrews, Internet Engines Inc. / Internet Software Consortium
> 1 Seymour St., Dundas Valley, NSW 2117, Australia
> PHONE: +61 2 9871 4742                 INTERNET: Mark.Andrews at iengines.com





More information about the bind-users mailing list