Greetings from OmniOS (an illumos distro), plus an odd error message

Dan McDonald danmcd at omniti.com
Wed May 28 00:47:08 UTC 2014


Hello!

We'd like to ship the ISC DHCP server as an installable component of OmniOS.  To that end, I've attempted compilation and a quick smoke test of it on the latest stable OmniOS release (r151010).  The new, Oracle-contributed configuration options (--enable-use-sockets --enable-ipv4-pktinfo) seem to work on illumos (nee OpenSolaris until Oracle closed the barn door) just fine, save one odd error.

It passed my smoke test (with a simple configuration, it handed out an address to a client).  When I hit ^C to stop it, however, I got this (date/time/hostname removed only for width reduction):

dhcpd: [ID 702911 daemon.error] Impossible condition at socket.c:409
dhcpd: [ID 702911 daemon.error] 
dhcpd: [ID 702911 daemon.error] If you think you have received this message due to a bug rather
dhcpd: [ID 702911 daemon.error] than a configuration issue please read the section on submitting
dhcpd: [ID 702911 daemon.error] bugs on either our web page at www.isc.org or in the README file
dhcpd: [ID 702911 daemon.error] before submitting a bug.  These pages explain the proper
dhcpd: [ID 702911 daemon.error] process and the information we find helpful for debugging..
dhcpd: [ID 702911 daemon.error] 
dhcpd: [ID 702911 daemon.error] exiting.

The code there indicates some sort of reference counting failure:

.  .  .
#if defined(IP_PKTINFO) && defined(IP_RECVPKTINFO) && defined(USE_V4_PKTINFO)
        /* Dereference the global v4 socket. */
        if ((info->rfdesc == global_v4_socket) &&
            (info->wfdesc == global_v4_socket) &&
            (global_v4_socket_references > 0)) {
                global_v4_socket_references--;
                info->rfdesc = -1;
        } else {
                log_fatal("Impossible condition at %s:%d", MDL);
        }
.  .  .

It's distinctly possible there's some post-OSol change in S11 that I need to account for somehow.  It's also possible this is a real bug.  The rfdesc I have is 6, which matches global_v4_socket.  The wfdesc is -1.  The comment for the data structure says "if different".  I see a few places where wfdesc can be set to -1, but I'm not sure how.

Pardon my newbieness, but if anyone in the audience has an idea about this, please let me know.

Thanks,
Dan



More information about the dhcp-hackers mailing list