[asterisk-bugs] [Asterisk 0014859]: [patch] lock is not released on channel masquarade

Asterisk Bug Tracker noreply at bugs.digium.com
Thu Aug 20 13:09:17 CDT 2009


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=14859 
====================================================================== 
Reported By:                atis
Assigned To:                tilghman
====================================================================== 
Project:                    Asterisk
Issue ID:                   14859
Category:                   Functions/func_lock
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     feedback
Asterisk Version:           1.4.19 
Regression:                 No 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2009-04-08 10:39 CDT
Last Modified:              2009-08-20 13:09 CDT
====================================================================== 
Summary:                    [patch] lock is not released on channel masquarade
Description: 
Scenario: 

Queue -> Local channel -> answer_macro -> TRYLOCK -> bridge (masquarade)
-> TRYLOCK

First TRYLOCK creates lock correctly, but unlock is called outside of the
same thread, so it gives permission denied. Respectively lock remains even
if channel is dead or masqueraded, and second attempt to TRYLOCK gives
failure.


====================================================================== 

---------------------------------------------------------------------- 
 (0109359) atis (reporter) - 2009-08-20 13:09
 https://issues.asterisk.org/view.php?id=14859#c109359 
---------------------------------------------------------------------- 
Latest patch seems to work on trunk. 

However it remains unclear from logs where the lock is actually
destroyed.

For example, if calling TRYLOCK in first local channel, it would say: 

func_lock.c: Channel SIP/90099-09439398 has no lock datastore, so we're
allocating one.

Then, while that channel is active, if another channel calls TRYLOCK with
the same name, it returns 0, but still says that it has no datastore. 

Once both local channels are dead, lock seems to be gone, calling
subsequential UNLOCK's and TRYLOCK's works as expected.

P.S. i wonder why those locks don't show up in "core show locks", is this
intended or that's broken in trunk. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2009-08-20 13:09 atis           Note Added: 0109359                          
======================================================================




More information about the asterisk-bugs mailing list