I have done some debug testing with the 'valgrind' that Kalle
suggested and came accross some points:

==29137==
==29137== 411 errors in context 2 of 2:
==29137== pthread_mutex_destroy: mutex is still in use
==29137==    at 0x4029FB7F: pthread_error (vg_libpthread.c:231)
==29137==    by 0x402A0A18: __pthread_mutex_destroy
(vg_libpthread.c:848)
==29137==    by 0x808C8ED: mutex_destroy (gwlib/thread.c:55)
==29137==    by 0x808676E: list_destroy (gwlib/list.c:97)

which refers to the code in gwlib/list.c:

void list_destroy(List *list, list_item_destructor_t *destructor)
{
    void *item;

    if (list == NULL)
        return;

    if (destructor != NULL) {
        while ((item = list_extract_first(list)) != NULL)
            destructor(item);
    }

    mutex_lock(list->permanent_lock);           <------
    mutex_destroy(list->permanent_lock);
    mutex_destroy(list->single_operation_lock);
    pthread_cond_destroy(&list->nonempty);
    gw_free(list->tab);
    gw_free(list);
}

I guess we should not lock a mutex that is then destroyed, right?!

Stipe

[EMAIL PROTECTED]
-------------------------------------------------------------------
Wapme Systems AG

Vogelsanger Weg 80
40470 Düsseldorf

Tel: +49-211-74845-0
Fax: +49-211-74845-299

E-Mail: [EMAIL PROTECTED]
Internet: http://www.wapme-systems.de
-------------------------------------------------------------------
wapme.net - wherever you are

Reply via email to