Samuel J. Greear <[email protected]> added the comment: BIND is queuing socket operations (read/write), marking them as queued, but then not filtering ready events (from kqueue/poll/select) that would result in a second queued operation and then asserting when they catch it just prior to queueing (in dispatch_recv() in this case, but it is also possible for it to happen in dispatch_send()). Raising the number of FD events, ISC_SOCKET_MAXEVENTS may work around this in our kevent case.
A possible fix might be to change the INSIST()'s in dispatch_send/recv() to if (sock->pending_recv) return;, but I have not tested this. There is an underlying bug here and we should re-file this upstream. _____________________________________________________ DragonFly issue tracker <[email protected]> <http://bugs.dragonflybsd.org/issue1730> _____________________________________________________
