[BUG] Crash calling pjsua_call_answer2() on UAC call.

BC
b17 c0de
Fri, Oct 27, 2017 7:49 AM

Hi,
A crash occurs when pjsua_call_answer2() is called on a call_id that is a
UAC.

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
    (code=1, address=0x8)
    • frame #0: 0x0000000100a50801
      voicebridgepj_list_insert_after(pos=0x0000000000000000, node=0x0000611000002a28) at list_i.h:32 frame #1: 0x0000000100a5094e voicebridgepj_list_insert_before(pos=0x0000000100ca4bf0,
      node=0x0000611000002a28) at list_i.h:40
      frame #2: 0x000000010050452d
      voicebridgepj_list_push_back(list=0x0000000100ca4bf0, node=0x0000611000002a28) at list.h:128 frame #3: 0x000000010050f3a3 voicebridgepjsua_call_answer2(call_id=0,
      opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70,
      msg_data=0x0000000000000000) at pjsua_call.c:2282
      frame #4: 0x000000010050df44 voicebridge`pjsua_call_answer(call_id=0,
      code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at
      pjsua_call.c:2174

frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0,
opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70,
msg_data=0x0000000000000000) at pjsua_call.c:2282
2279            answer->msg_data =
pjsua_msg_data_clone(call->inv->pool_prov,
2280                                                    msg_data);
2281        }
-> 2282
pj_list_push_back(&call->async_call.call_var.inc_call.answers,
2283                          answer);
2284
2285        PJSUA_UNLOCK();
(lldb) p call->async_call.call_var.inc_call.answers
(call_answer) $1 = {
prev = 0x0000000000000000
next = 0x0000000000000000
msg_data = 0x0000000000000000
reason = 0x0000000000000000
code = 0
opt = 0x0000000000000000
}

An error should be returned instead.

Regards,
Kal

Hi, A crash occurs when pjsua_call_answer2() is called on a call_id that is a UAC. * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x8) * frame #0: 0x0000000100a50801 voicebridge`pj_list_insert_after(pos=0x0000000000000000, node=0x0000611000002a28) at list_i.h:32 frame #1: 0x0000000100a5094e voicebridge`pj_list_insert_before(pos=0x0000000100ca4bf0, node=0x0000611000002a28) at list_i.h:40 frame #2: 0x000000010050452d voicebridge`pj_list_push_back(list=0x0000000100ca4bf0, node=0x0000611000002a28) at list.h:128 frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0, opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at pjsua_call.c:2282 frame #4: 0x000000010050df44 voicebridge`pjsua_call_answer(call_id=0, code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at pjsua_call.c:2174 frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0, opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at pjsua_call.c:2282 2279 answer->msg_data = pjsua_msg_data_clone(call->inv->pool_prov, 2280 msg_data); 2281 } -> 2282 pj_list_push_back(&call->async_call.call_var.inc_call.answers, 2283 answer); 2284 2285 PJSUA_UNLOCK(); (lldb) p call->async_call.call_var.inc_call.answers (call_answer) $1 = { prev = 0x0000000000000000 next = 0x0000000000000000 msg_data = 0x0000000000000000 reason = 0x0000000000000000 code = 0 opt = 0x0000000000000000 } An error should be returned instead. Regards, Kal
BC
b17 c0de
Fri, Oct 27, 2017 9:55 AM

I should return PJ_EINVALIDOP ?.

On Fri, Oct 27, 2017 at 9:49 AM, b17 c0de b17c0de@gmail.com wrote:

Hi,
A crash occurs when pjsua_call_answer2() is called on a call_id that is a
UAC.

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS
    (code=1, address=0x8)
    • frame #0: 0x0000000100a50801 voicebridgepj_list_insert_after(pos=0x0000000000000000, node=0x0000611000002a28) at list_i.h:32 frame #1: 0x0000000100a5094e voicebridgepj_list_insert_before(pos=0x0000000100ca4bf0,
      node=0x0000611000002a28) at list_i.h:40
      frame #2: 0x000000010050452d voicebridgepj_list_push_back(list=0x0000000100ca4bf0, node=0x0000611000002a28) at list.h:128 frame #3: 0x000000010050f3a3 voicebridgepjsua_call_answer2(call_id=0,
      opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70,
      msg_data=0x0000000000000000) at pjsua_call.c:2282
      frame #4: 0x000000010050df44 voicebridge`pjsua_call_answer(call_id=0,
      code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at
      pjsua_call.c:2174

frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0,
opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70,
msg_data=0x0000000000000000) at pjsua_call.c:2282
2279            answer->msg_data = pjsua_msg_data_clone(call->
inv->pool_prov,
2280                                                    msg_data);
2281        }
-> 2282        pj_list_push_back(&call->async_call.call_var.inc_call.
answers,
2283                          answer);
2284
2285        PJSUA_UNLOCK();
(lldb) p call->async_call.call_var.inc_call.answers
(call_answer) $1 = {
prev = 0x0000000000000000
next = 0x0000000000000000
msg_data = 0x0000000000000000
reason = 0x0000000000000000
code = 0
opt = 0x0000000000000000
}

An error should be returned instead.

Regards,
Kal

I should return PJ_EINVALIDOP ?. On Fri, Oct 27, 2017 at 9:49 AM, b17 c0de <b17c0de@gmail.com> wrote: > Hi, > A crash occurs when pjsua_call_answer2() is called on a call_id that is a > UAC. > > * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS > (code=1, address=0x8) > * frame #0: 0x0000000100a50801 voicebridge`pj_list_insert_after(pos=0x0000000000000000, > node=0x0000611000002a28) at list_i.h:32 > frame #1: 0x0000000100a5094e voicebridge`pj_list_insert_before(pos=0x0000000100ca4bf0, > node=0x0000611000002a28) at list_i.h:40 > frame #2: 0x000000010050452d voicebridge`pj_list_push_back(list=0x0000000100ca4bf0, > node=0x0000611000002a28) at list.h:128 > frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0, > opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70, > msg_data=0x0000000000000000) at pjsua_call.c:2282 > frame #4: 0x000000010050df44 voicebridge`pjsua_call_answer(call_id=0, > code=0, reason=0x00007ffeefbf3b70, msg_data=0x0000000000000000) at > pjsua_call.c:2174 > > > frame #3: 0x000000010050f3a3 voicebridge`pjsua_call_answer2(call_id=0, > opt=0x0000000000000000, code=0, reason=0x00007ffeefbf3b70, > msg_data=0x0000000000000000) at pjsua_call.c:2282 > 2279 answer->msg_data = pjsua_msg_data_clone(call-> > inv->pool_prov, > 2280 msg_data); > 2281 } > -> 2282 pj_list_push_back(&call->async_call.call_var.inc_call. > answers, > 2283 answer); > 2284 > 2285 PJSUA_UNLOCK(); > (lldb) p call->async_call.call_var.inc_call.answers > (call_answer) $1 = { > prev = 0x0000000000000000 > next = 0x0000000000000000 > msg_data = 0x0000000000000000 > reason = 0x0000000000000000 > code = 0 > opt = 0x0000000000000000 > } > > An error should be returned instead. > > Regards, > Kal >