Merged revisions 302266 via svnmerge from
authorJeff Peeler <jpeeler@digium.com>
Tue, 18 Jan 2011 20:40:59 +0000 (20:40 +0000)
committerJeff Peeler <jpeeler@digium.com>
Tue, 18 Jan 2011 20:40:59 +0000 (20:40 +0000)
commitb1f9f1e78f8ead655dc87853c49ec80d324c8982
tree9aec74289f901f253f1b854b68b0cc825735e1ea
parent519b766cd491766f628ed99aa31cedb4095115c9
Merged revisions 302266 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r302266 | jpeeler | 2011-01-18 14:19:57 -0600 (Tue, 18 Jan 2011) | 34 lines

  Merged revisions 302265 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ........
    r302265 | jpeeler | 2011-01-18 14:13:52 -0600 (Tue, 18 Jan 2011) | 27 lines

    Convert device state callbacks to ao2 objects to fix a deadlock in chan_sip.

    Lock scenario presented here:
    Thread 1
     holds ast_rdlock_contexts &conlock
     holds handle_statechange hints
     holds handle_statechange hint
      waiting for cb_extensionstate
       Locked Here: chan_sip.c line 7428 (find_call)
    Thread 2
     holds handle_request_do &netlock
     holds find_call sip_pvt_ptr
      waiting for ast_rdlock_contexts &conlock
       Locked Here: pbx.c line 9911 (ast_rdlock_contexts)

    Chan_sip has an established locking order of locking the sip_pvt and then
    getting the context lock. So the as stated by the summary, the operations in
    thread 2 have been modified to no longer require the context lock.

    (closes issue #18310)
    Reported by: one47
    Patches:
          statecbs_ao2.mk2.patch uploaded by one47 (license 23),
          modified by me

    Review: https://reviewboard.asterisk.org/r/1072/
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@302270 65c4cc65-6c06-0410-ace0-fbb531ad65f3
main/pbx.c