Opened 5 weeks ago

Closed 2 weeks ago

Last modified 2 weeks ago

#2251 closed defect (fixed)

Deadlock between PJSUA LOCK and conference mutex

Reported by: ming Owned by: ming
Priority: normal Milestone: release-2.10
Component: pjmedia Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported: no

Description (last modified by ming)

The old issue of #2115 and #1464 still persists, because it can affect other callbacks as well, not just on_call_state(). If inside any pjsua callback which holds PJSUA LOCK, the app calls any pjsua conference/video conference API (which will try to acquire conference mutex), the deadlock can potentially occur with media ports' callbacks, which hold conference mutex, and if the app calls any pjsua API from there.

The best solution seems to be not holding the conference lock when calling media port's eof callbacks. In this ticket, we will try to achieve this by using media event mechanism to call those callbacks.

IMPORTANT: Note that this ticket will deprecate pjmedia_*_set_eof_cb() and pjmedia_*_set_cb() and replace it with pjmedia_*_set_eof_cb2()/set_cb2(), and the callbacks will now be called asynchronously.

Change History (5)

comment:1 Changed 2 weeks ago by ming

Last edited 2 weeks ago by ming (previous) (diff)

comment:2 Changed 2 weeks ago by ming

  • Description modified (diff)

comment:3 Changed 2 weeks ago by ming

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

In 6112:

Fixed #2251: Deadlock between PJSUA LOCK and conference mutex

comment:4 Changed 2 weeks ago by ming

  • Description modified (diff)

comment:5 Changed 2 weeks ago by ming

  • Description modified (diff)
Note: See TracTickets for help on using tickets.