Stipe Tolj schrieb:
some more debug information for the pthread issues on Cygwin:

as gwlib/conn.c uses our gwthread_self() as callback function for openssl's CRYPTO_set_id_callback():

/* Return the thread id of this thread. */
long gwthread_self(void)
{
    struct threadinfo *threadinfo;
    threadinfo = pthread_getspecific(tsd_key);
    if (threadinfo)
        return threadinfo->number;
    else {
        printf("XXX gwthread_self with empty threadinfo\n");
        return -1;
    }
}

my suspect so far is pthread_getspecific() on the Cygwin platform. Seems they have issues with it. And keep in mind that the gwlib/thread.c uses gwthread_self() also in the mutex_foonbar() calls, hence we bang.

I can have a cywin specific gwlib/gwthread-pthread-cygwin.c that avoids the tsd_key usage and hence avoids pthread_[get|set]specific() void* data for threads and stores the corresponding threadinfo records to a global (and hence self-locked) table.

Stipe

-------------------------------------------------------------------
Kölner Landstrasse 419
40589 Düsseldorf, NRW, Germany

tolj.org system architecture      Kannel Software Foundation (KSF)
http://www.tolj.org/              http://www.kannel.org/

mailto:st_{at}_tolj.org           mailto:stolj_{at}_kannel.org
-------------------------------------------------------------------

Reply via email to