crash while using ICE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am using ICE in a standalone manner in a demo that I am trying to
build. Sometimes, when I am deallocating after I am done using the ICE
stream transport, I get a crash because of assert failure in file
timer.c in function

static int cancel( pj_timer_heap_t *ht,
		   pj_timer_entry *entry,
		   int dont_call)

Basically, the following fails:

if (entry != ht->heap[timer_node_slot])
    {
      pj_assert(entry == ht->heap[timer_node_slot]);
      return 0;
    }

Based on icedemo example, I first destroy ICE stream transport and
then wait for the handle_events thread to join. Something like this:
    if (icedemo.icest)
	pj_ice_strans_destroy(icedemo.icest);

    pj_thread_sleep(500);

    icedemo.thread_quit_flag = PJ_TRUE;
    if (icedemo.thread) {
	pj_thread_join(icedemo.thread);
	pj_thread_destroy(icedemo.thread);
    }

The only difference in my case is that I have multiple ICE stream
transport objects which I destroy before quitting the thread.

It seems to crash while processing some event in ioqueue:

Stack frame #01  pc 0007a754   Routine cancel in ../src/pj/timer.c:391
Stack frame #02  pc 0007ae34   Routine pj_timer_heap_cancel in
../src/pj/timer.c:536
Stack frame #03  pc 00050d30   Routine sess_shutdown in
../src/pjnath/turn_session.c:453
Stack frame #04  pc 00053050   Routine on_allocate_success in
../src/pjnath/turn_session.c:1454
Stack frame #05  pc 000535f0   Routine stun_on_request_complete in
../src/pjnath/turn_session.c:1619
Stack frame #06  pc 0004a748   Routine stun_tsx_on_complete in
../src/pjnath/stun_session.c:463
Stack frame #07  pc 000503f0   Routine pj_stun_client_tsx_on_rx_msg in (null):0
Stack frame #08  pc 0004c974   Routine on_incoming_response in
../src/pjnath/stun_session.c:1375
Stack frame #09  pc 0004d0a8   Routine pj_stun_session_on_rx_pkt in (null):0
Stack frame #10  pc 00052be4   Routine pj_turn_session_on_rx_pkt in
../src/pjnath/turn_session.c:1320
Stack frame #11  pc 00055d90   Routine on_data_read in
../src/pjnath/turn_sock.c:695
Stack frame #12  pc 0006e6f0   Routine ioqueue_on_read_complete in
../src/pj/activesock.c:624
Stack frame #13  pc 00064c38   Routine ioqueue_dispatch_read_event in
../src/pj/ioqueue_common_abs.c:627
Stack frame #14  pc 00067460   Routine pj_ioqueue_poll in (null):0
Stack frame #15  pc 0002747c   Routine handle_events in
/home/xyz/test_ice.cpp:139

Should I first stop the thread that is polling for events and then
destroy ICE stream transport?

Best,
Aditya



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux