Hi,
   We have experienced several crashes in Avahi, 0.6.31, running CentOS 7.8.   
The crash dump is in avahi library.  This is what I see from gdb.

===============
(gdb) bt
#0  0x00007f5d83300387 in raise () from /lib64/libc.so.6
#1  0x00007f5d83301a78 in abort () from /lib64/libc.so.6
#2  0x00007f5d832f91a6 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f5d832f9252 in __assert_fail () from /lib64/libc.so.6
#4  0x00007f5d7c54dc0e in avahi_simple_poll_dispatch () from 
/lib64/libavahi-common.so.3
#5  0x00007f5d7c54debd in avahi_simple_poll_loop () from 
/lib64/libavahi-common.so.3
#6  0x00007f5d7c54df84 in thread () from /lib64/libavahi-common.so.3
#7  0x00007f5d842c7ea5 in start_thread () from /lib64/libpthread.so.0
#8  0x00007f5d833c88dd in clone () from /lib64/libc.so.6
===============


I downloaded the source code of that version and annotated the stack far,es. 
There are four asserts in avahi_simple_poll_dispatch().  It is hard to tell 
which one triggers the accept.
The first one does not seem to be an issue since 'assert(s)' is also called in 
avahi_simple_poll_loop() in frame #5.

Any help is appreciated.

Thanks

Alex

===========
#0  0x00007f5d83300387 in raise () from /lib64/libc.so.6
#1  0x00007f5d83301a78 in abort () from /lib64/libc.so.6
#2  0x00007f5d832f91a6 in __assert_fail_base () from /lib64/libc.so.6
#3  0x00007f5d832f9252 in __assert_fail () from /lib64/libc.so.6

avahi-common/simple-watch.c

int avahi_simple_poll_dispatch(AvahiSimplePoll *s) {
    AvahiTimeout *next_timeout;
    AvahiWatch *w;

    assert(s);
    assert(s->state == STATE_RAN);
    s->state = STATE_DISPATCHING;

    /* We execute only on callback in every iteration */

    /* Check whether the wakeup time has been reached now */
    if ((next_timeout = find_next_timeout(s))) {

        if (next_timeout->expiry.tv_sec == 0 && next_timeout->expiry.tv_usec == 
0) {

            /* Just a shortcut so that we don't need to call gettimeofday() */
            timeout_callback(next_timeout);
            goto finish;
        }

        if (avahi_age(&next_timeout->expiry) >= 0) {

            /* Timeout elapsed */
            timeout_callback(next_timeout);
            goto finish;
        }
    }

    /* Look for some kind of I/O event */
    for (w = s->watches; w; w = w->watches_next) {

        if (w->dead)
            continue;

        assert(w->idx >= 0);
        assert(w->idx < s->n_pollfds);

        if (s->pollfds[w->idx].revents != 0) {
            w->callback(w, w->pollfd.fd, s->pollfds[w->idx].revents, 
w->userdata);
            goto finish;
        }
    }

finish:

    s->state = STATE_DISPATCHED;
    return 0;
}


#4  0x00007f5d7c54dc0e in avahi_simple_poll_dispatch () from 
/lib64/libavahi-common.so.3

avahi-common/simple-watch.c

int avahi_simple_poll_loop(AvahiSimplePoll *s) {
    int r;

    assert(s);

    for (;;)
        if ((r = avahi_simple_poll_iterate(s, -1)) != 0)
            if (r >= 0 || errno != EINTR)
                return r;
}

int avahi_simple_poll_iterate(AvahiSimplePoll *s, int timeout) {
    int r;

    if ((r = avahi_simple_poll_prepare(s, timeout)) != 0)
        return r;

    if ((r = avahi_simple_poll_run(s)) != 0)
        return r;

    if ((r = avahi_simple_poll_dispatch(s)) != 0)
        return r;

    return 0;
}


#5  0x00007f5d7c54debd in avahi_simple_poll_loop ()  from 
/lib64/libavahi-common.so.3

avahi-common/thread-watch.c
static void* thread(void *userdata){
    AvahiThreadedPoll *p = userdata;
    sigset_t mask;

    /* Make sure that signals are delivered to the main thread */
    sigfillset(&mask);
    pthread_sigmask(SIG_BLOCK, &mask, NULL);

    pthread_mutex_lock(&p->mutex);
    p->retval = avahi_simple_poll_loop(p->simple_poll);
    pthread_mutex_unlock(&p->mutex);

    return NULL;
}


#6  0x00007f5d7c54df84 in thread () from /lib64/libavahi-common.so.3
#7  0x00007f5d842c7ea5 in start_thread () from /lib64/libpthread.so.0
#8  0x00007f5d833c88dd in clone () from /lib64/libc.so.6








_______________________________________________
avahi mailing list
avahi@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/avahi

Reply via email to