On 2/25/08, Adeyeye O. Michael <micadeyeye at crg.ee.uct.ac.za> wrote: > HI Benny, > I have pjsip integrated successfully into Mozilla FF in a > loosely-coupled approach. The immediate problem is that once I > de-register and try to register again, my browser hangs/crashes. > Obviously, it has to do with thread because here is the error that I get > at the console: > > firefox-bin: ../src/pj/os_core_unix.c:276: pj_thread_register: Assertion > `thread->signature1 != 0xDEAFBEEF || thread->signature2 != 0xDEADC0DE || > (thread->thread == pthread_self())' failed. > [New LWP 11919] > > I understand that I need to register a thread when using an external > API/program. First, my browser crashes when I try registering a thread Just to be more precise, you need to register the current thread before calling PJSIP/PJLIB API, *only* when the current thread has not been registered to PJLIB before *and* this thread was created using native thread API rather than pj_thread_create(). > before using pjsua_create,pjsua_init or pjsua_start. Otherwise, it works > fine when i perform the registration task(pjsua_init, pjsua_start) > without registering a thread first (i.e. it is using the PJSUA FYI pjsua_create() will call pj_create() to initialize PJLIB, and this implicitly registers current thread to PJLIB. In other words, no need to register the thread that calls pjsua_create() since this will have been done in pj_create(). > self-generated thread). Whenever I want to perform task like send IM and > de-register, I need to register a thread (though same thread parameters). > Yes, that's a good approach. A slightly better approach probably is to check whether the thread has been registered before registering it again, using pj_thread_is_registered(). But there is a bug in your code. When registering a thread, the pj_thread_desc MUST have a lifetime that's at least the same as the thread being registered (or the easiest is to make the pj_thread_desc variable static). So you cannot allocate this from a local variable like the one in your code. cheers, -benny > I usually call pjsua_destroy (to free resourses and de-register). Should > I do this, my browser will crash whenever I want to register again and > produces the error above. I tried couple of things like unregistering > current/all thread (s) before/after calling pjsua_destroy but won't work. > > Any useful info on this. Here is my implementation code with thread > being registered when sending IM (line 297) and destroying(line 374): > http://pastebin.mozilla.org/343980 > > Is any resource is in use or there are existing threads after destroying?? > How can I fix this?? > > Sorry for my poorly indented code!!! > Mike. > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >