Hi! With the help from PJSIP list useres, I think I am close to having my program to use PJSIP's ICE functionalities 100% correctly. However, I still have some exceptions, which I enumerate in this mail: *1)-------------------------------------------------* //FILE = ice_session.c //METHOD = on_stun_request_complete //EXCEPTION = pj_assert(tdata == check->tdata) fails stack trace: PCCommunicator.exe!on_stun_request_complete(pj_stun_session * stun_sess=0x057a2c9c, int status=0, void * token=0x057a76d8, pj_stun_tx_data * tdata=0x057a75fc, const pj_stun_msg * response=0x057a34fc, const void * src_addr=0x0579b9d8, unsigned int src_addr_len=16) Line 1766 + 0x24 bytes C PCCommunicator.exe!stun_tsx_on_complete(pj_stun_client_tsx * tsx=0x057a7704, int status=0, const pj_stun_msg * response=0x057a34fc, const void * src_addr=0x0579b9d8, unsigned int src_addr_len=16) Line 413 + 0x29 bytes C PCCommunicator.exe!pj_stun_client_tsx_on_rx_msg(pj_stun_client_tsx * tsx=0x057a7704, const pj_stun_msg * msg=0x057a34fc, const void * src_addr=0x0579b9d8, unsigned int src_addr_len=16) Line 395 + 0x1e bytes C PCCommunicator.exe!on_incoming_response(pj_stun_session * sess=0x057a2c9c, unsigned int options=1, const unsigned char * pkt=0x0579bf6c, unsigned int pkt_len=88, pj_stun_msg * msg=0x057a34fc, const void * src_addr=0x0579b9d8, unsigned int src_addr_len=16) Line 1165 + 0x18 bytes C PCCommunicator.exe!pj_stun_session_on_rx_pkt(pj_stun_session * sess=0x057a2c9c, const void * packet=0x0579bf6c, unsigned int pkt_size=88, unsigned int options=1, void * token=0x057a1cec, unsigned int * parsed_len=0x00000000, const void * src_addr=0x0579b9d8, unsigned int src_addr_len=16) Line 1366 + 0x21 bytes C PCCommunicator.exe!pj_ice_sess_on_rx_pkt(pj_ice_sess * ice=0x057a0e1c, unsigned int comp_id=1, unsigned int transport_id=1, void * pkt=0x0579bf6c, unsigned int pkt_size=88, const void * src_addr=0x0579b9d8, int src_addr_len=16) Line 2470 + 0x24 bytes C PCCommunicator.exe!stun_on_rx_data(pj_stun_sock * stun_sock=0x0579b704, void * pkt=0x0579bf6c, unsigned int pkt_len=88, const void * src_addr=0x0579b9d8, unsigned int addr_len=16) Line 1195 + 0x2a bytes C PCCommunicator.exe!on_data_recvfrom(pj_activesock_t * asock=0x0579b614, void * data=0x0579bf6c, unsigned int size=88, const void * src_addr=0x0579b9d8, int addr_len=16, int status=0) Line 790 + 0x1e bytes C PCCommunicator.exe!ioqueue_on_read_complete(pj_ioqueue_key_t * key=0x0562b494, pj_ioqueue_op_key_t * op_key=0x0579b944, long bytes_read=88) Line 360 + 0x38 bytes C PCCommunicator.exe!ioqueue_dispatch_read_event(pj_ioqueue_t * ioqueue=0x0562ade8, pj_ioqueue_key_t * h=0x0562b494) Line 550 + 0x16 bytes C PCCommunicator.exe!pj_ioqueue_poll(pj_ioqueue_t * ioqueue=0x0562ade8, const pj_time_val * timeout=0x05c4fcac) Line 763 + 0x17 bytes C PCCommunicator.exe!pjsip_endpt_handle_events2(pjsip_endpoint * endpt=0x05622eec, const pj_time_val * max_timeout=0x05c4fe7c, unsigned int * p_count=0x00000000) Line 718 + 0x10 bytes C PCCommunicator.exe!pjsip_endpt_handle_events(pjsip_endpoint * endpt=0x05622eec, const pj_time_val * max_timeout=0x05c4fe7c) Line 745 + 0xf bytes C PCCommunicator.exe!EventHandler(void * __formal=0x00000000) Line 547 + 0x16 bytes C++ PCCommunicator.exe!thread_main(void * param=0x05621bbc) Line 413 + 0x11 bytes C I can trace back as far as pj_stun_session_on_rx_pkt, and still see that the things involved in failing assert already have different values at that time. *2)-------------------------------------------------* //FILE = ice_strans.c //METHOD = sess_init_update //EXCEPTION = comp is NULL (0x00000000) PCCommunicator.exe!sess_init_update(pj_ice_strans * ice_st=0x18a21c5c) Line 547 + 0x18 bytes C PCCommunicator.exe!stun_on_status(pj_stun_sock * stun_sock=0x1c3fbe0c, pj_stun_sock_op op=PJ_STUN_SOCK_BINDING_OP, int status=0) Line 1276 + 0x9 bytes C PCCommunicator.exe!sess_on_request_complete(pj_stun_session * sess=0x1c41583c, int status=0, void * token=0x00000001, pj_stun_tx_data * tdata=0x1c419c5c, const pj_stun_msg * response=0x1c417c5c, const void * src_addr=0x1c40de9c, unsigned int src_addr_len=16) Line 706 + 0x14 bytes C PCCommunicator.exe!stun_tsx_on_complete(pj_stun_client_tsx * tsx=0x18bc8f44, int status=0, const pj_stun_msg * response=0x1c417c5c, const void * src_addr=0x1c40de9c, unsigned int src_addr_len=16) Line 420 + 0x29 bytes C PCCommunicator.exe!pj_stun_client_tsx_on_rx_msg(pj_stun_client_tsx * tsx=0x18bc8f44, const pj_stun_msg * msg=0x1c417c5c, const void * src_addr=0x1c40de9c, unsigned int src_addr_len=16) Line 395 + 0x1e bytes C PCCommunicator.exe!on_incoming_response(pj_stun_session * sess=0x1c41583c, unsigned int options=5, const unsigned char * pkt=0x1c41180c, unsigned int pkt_len=88, pj_stun_msg * msg=0x1c417c5c, const void * src_addr=0x1c40de9c, unsigned int src_addr_len=16) Line 1185 + 0x18 bytes C PCCommunicator.exe!pj_stun_session_on_rx_pkt(pj_stun_session * sess=0x1c41583c, const void * packet=0x1c41180c, unsigned int pkt_size=88, unsigned int options=1, void * token=0x00000000, unsigned int * parsed_len=0x00000000, const void * src_addr=0x1c40de9c, unsigned int src_addr_len=16) Line 1398 + 0x21 bytes C PCCommunicator.exe!on_data_recvfrom(pj_activesock_t * asock=0x1c3fbfb8, void * data=0x1c41180c, unsigned int size=88, const void * src_addr=0x1c40de9c, int addr_len=16, int status=0) Line 817 + 0x25 bytes C PCCommunicator.exe!ioqueue_on_read_complete(pj_ioqueue_key_t * key=0x0f26b8d4, pj_ioqueue_op_key_t * op_key=0x1c40de0c, long bytes_read=88) Line 341 + 0x38 bytes C PCCommunicator.exe!ioqueue_dispatch_read_event(pj_ioqueue_t * ioqueue=0x0e880928, pj_ioqueue_key_t * h=0x0f26b8d4) Line 549 + 0x16 bytes C PCCommunicator.exe!pj_ioqueue_poll(pj_ioqueue_t * ioqueue=0x0e880928, const pj_time_val * timeout=0x0ddefcac) Line 763 + 0x17 bytes C PCCommunicator.exe!pjsip_endpt_handle_events2(pjsip_endpoint * endpt=0x0e3c705c, const pj_time_val * max_timeout=0x0ddefe7c, unsigned int * p_count=0x00000000) Line 694 + 0x10 bytes C PCCommunicator.exe!pjsip_endpt_handle_events(pjsip_endpoint * endpt=0x0e3c705c, const pj_time_val * max_timeout=0x0ddefe7c) Line 721 + 0xf bytes C PCCommunicator.exe!EventHandler(void * __formal=0x00000000) Line 630 + 0x16 bytes C++ PCCommunicator.exe!thread_main(void * param=0x0c12bf08) Line 413 + 0x11 bytes C I can trace the call back to *stun_on_status()* and see that there, if I enumerate ice_st's comp, I can see that some of them are already NULL (0x00000000). If required, I can try trace back in the stack even more and provide any required details Any help on understanding theses issues will be greatly appreciated. Cheers Pedro Gon?alves