Opened 8 years ago

Closed 8 years ago

#1247 closed defect (fixed)

Deadlock potential in sip_regc.c if sending fails (thank you Alejandro Orellana for the report)

Reported by: bennylp Owned by: bennylp
Priority: normal Milestone: release-1.10
Component: pjsip Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description (last modified by bennylp)

Deadlock between sip_regc.c and PJSUA-LIB may occur when sending (un)registration message fails with immediate error, e.g. because the transport fails.

Sample stack trace:

Thread 0:

0   semaphore_wait_signal_trap + 8
1   semaphore_wait_signal + 2
2   pthread_mutex_lock + 256
3   pj_mutex_lock + 12  
4   pj_lock_acquire + 8  
5   pjsip_regc_register + 54  
6   pjsua_acc_set_registration + 168  
..

Thread 1:

0   semaphore_wait_signal_trap + 8
1   semaphore_wait_signal + 2
2   pthread_mutex_lock + 256
3   pj_mutex_lock + 12  
4   regc_cb + 46  
5   call_callback + 46  
6   tsx_callback + 604  
7   mod_util_on_tsx_state + 48  
8   tsx_set_state + 84  
9   send_msg_callback + 418  
10  stateless_send_transport_cb + 42  
11  stateless_send_transport_cb + 360  
12  stateless_send_resolver_callback + 98  
13  pjsip_resolve + 198  
14  pjsip_endpt_resolve + 14  
15  pjsip_endpt_send_request_stateless + 122  
16  tsx_send_msg + 366  
17  tsx_on_state_null + 62  
18  pjsip_tsx_send_msg + 48  
19  pjsip_endpt_send_request + 144  
20  pjsip_regc_send + 186  
21  regc_refresh_timer_cb + 106  
22  pj_timer_heap_poll + 112  
..

Change History (2)

comment:1 Changed 8 years ago by bennylp

  • Description modified (diff)

comment:2 Changed 8 years ago by bennylp

  • Resolution set to fixed
  • Status changed from new to closed

(In [3545]) Fixed #1247: Deadlock potential in sip_regc.c if sending fails (thank you Alejandro Orellana for the report)

Note: See TracTickets for help on using tickets.