|
Hello there! We provide support to an Windows application that uses OpenWengo (version 2.1) libraries as VoIP infraestructure, and I'm migrating the libs to updated QuteCom version 2.2-RC3. On first tests with normal condition (SIP and RTP via UDP transport) I've made a call and right after finishing it I tried to close the application. The application crashed with the following callstacks (these two seems to be the main involved on the crash): UOLFoneClientd-1.0.0.22.dll!pthread_mutex_destroy(pthread_mutex_t_ * * mutex=0x05227764) Line 92 + 0xc bytes C UOLFoneClientd-1.0.0.22.dll!owqueue_free(OWQueue * queue=0x05227720) Line 199 + 0xc bytes C UOLFoneClientd-1.0.0.22.dll!owsl_socket_info_free(OWSLSocketInfo * socket=0x05227598) Line 203 + 0xc bytes C UOLFoneClientd-1.0.0.22.dll!owsl_tls_close(OWSLSocketInfo * socket=0x05227598) Line 623 + 0x9 bytes C UOLFoneClientd-1.0.0.22.dll!owsl_close(int socket=3) Line 447 + 0xf bytes C UOLFoneClientd-1.0.0.22.dll!transport_socket_free(int * socket=0x05227550) Line 220 + 0xb bytes C UOLFoneClientd-1.0.0.22.dll!owlist_free_all(OWList * list=0x0521d188, void (void *)* free_element=0x08cf3330) Line 99 + 0x7 bytes C > UOLFoneClientd-1.0.0.22.dll!transport_terminate() Line 319 + 0x10 bytes C UOLFoneClientd-1.0.0.22.dll!eXosip_quit() Line 367 C UOLFoneClientd-1.0.0.22.dll!phTerminate() Line 2583 C UOLFoneClientd-1.0.0.22.dll!owplShutdown() Line 374 C UOLFoneClientd-1.0.0.22.dll!CPhApiAdapter::Finalize() Line 463 C++ This first one is regarding the application's thread on which I called the termination method. > UOLFoneClientd-1.0.0.22.dll!osip_list_add(osip_list * li=0x0000001c, void * el=0x0523efd0, int pos=-1) Line 104 + 0x3 bytes C UOLFoneClientd-1.0.0.22.dll!__osip_add_nist(osip * osip=0x00000000, osip_transaction * nist=0x0523efd0) Line 598 + 0x12 bytes C UOLFoneClientd-1.0.0.22.dll!osip_transaction_init(osip_transaction * * transaction=0x0904fc18, osip_fsm_type_t ctx_type=NIST, osip * osip=0x00000000, osip_message * request=0x05249b38) Line 212 + 0xf bytes C UOLFoneClientd-1.0.0.22.dll!eXosip_process_newrequest(osip_event * evt=0x051f6398) Line 1882 + 0x1b bytes C UOLFoneClientd-1.0.0.22.dll!eXosip_recv(int socket=1) Line 2541 + 0xc bytes C UOLFoneClientd-1.0.0.22.dll!transport_on_data_socket_event(int socket=1, OWSLEvent event=OWSL_EVENT_READ, void * user_data=0x00000000) Line 800 + 0xa bytes C UOLFoneClientd-1.0.0.22.dll!owsl_asynchronous_loop(void * dummy=0x00000000) Line 130 + 0x19 bytes C UOLFoneClientd-1.0.0.22.dll!ptw32_threadStart(void * vthreadParms=0x0521b2d0) Line 219 + 0x9 bytes C The crash occurred on top method of this second thread that is the one responsible for handling the primitives received from the network. I've searched blocking conditions in order to prevent such situation but I was not successfull. So I was thinking to suggest some blocking (critical section protected by some sort of mutex) procedure on file "transport_manager.c" with two objectives: 1- block "transport_terminate()" execution while an event is being handled; and, 2- set a finalization flag that must be validated by "transport_on_data_socket_event", as well as "callback methods" like it, to avoid their execution after transport termination. Can you guys send me your general impression of this ? Thanks and best regards, --
|
_______________________________________________ QuteCom-dev mailing list [email protected] http://lists.qutecom.org/mailman/listinfo/qutecom-dev
