I added some extra debug output in avahi and waited for the error to happen again, in this way found out that the assertion failure happens when the time_event_queue_root(q) call gives NULL so that the "else" part is used in update_timeout() in avahi-core/timeeventq.c:
I added some extra debug output in avahi and waited for the error to happen again, in this way found out that the assertion failure happens when the time_event_ queue_root( q) call gives NULL so that the "else" part is used in update_timeout() in avahi-core/ timeeventq. c:
static void update_ timeout( AvahiTimeEventQ ueue *q) {
AvahiTimeEvent *e;
assert(q);
if ((e = time_event_ queue_root( q)))
q->poll_ api->timeout_ update( q->timeout, &e->expiry);
q->poll_ api->timeout_ update( q->timeout, NULL); <-- assertion failure inside this call
else
}
So time_event_ queue_root( q) gives NULL which means that q->prioq->root is NULL. Why would that happen?