Summary:ASTERISK-09128: unlock error in compare_weight
Reporter:Peng Yong (ppyy)Labels:
Date Opened:2007-03-28 06:08:37Date Closed:2011-06-07 14:08:23
Versions:Frequency of
Description:Mar 28 18:52:36 ERROR[17196] ../include/asterisk/lock.h: app_queue.c line 1547 (compare_weight): mutex '&qlock' freed more times than we've locked!
Mar 28 18:52:36 ERROR[17196] ../include/asterisk/lock.h: app_queue.c line 1547 (compare_weight): Error releasing mutex: Operation not permitted

compare_weight is called by ring_entry, and ring_entry is called by ring_one.

it says:

   /* &qlock and &rq->lock already set by try_calling()
    * to solve deadlock */

but ring_one is not only called in try_calling, but also in someplace in wait_for_answer. qlock is not locked in wait_for_answer.

****** STEPS TO REPRODUCE ******

the error is caused by patch:


1.2 and 1.5 all have this error.
Comments:By: Serge Vecher (serge-v) 2007-03-28 08:45:25

ppyy, you've reported enough issues to know that you need to be testing with the latest release (1.2.17)... ;)

By: Peng Yong (ppyy) 2007-03-28 08:52:04

serge-v, i check the code of branch 1.2, no difference.

and the error is in branch 1.2, 1.4 and trunk.

By: Joshua C. Colp (jcolp) 2007-06-11 09:51:00

I have tried to reproduce this exact codeflow but have been unable to under latest 1.2, I suspect either it was fixed or requires a specific configuration. Can you upload the queue configuration so I can try? Thanks.

By: Joshua C. Colp (jcolp) 2007-06-27 16:38:41

Suspending this until the needed configuration info can be provided as I was yet again unable to reproduce it.