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