[asterisk-dev] Fwd: [svn-commits] jrose: trunk r403588 - in /trunk: ./ channels/chan_pjsip.c

Joshua Colp jcolp at digium.com
Tue Dec 10 08:13:41 CST 2013


Matthew Jordan wrote:
> I'm not sure this should have been committed.
>
> I hadn't seen that this had already been put up for review, otherwise I
> would have commented on the review - however, I did note the following
> on the issue:
>
> You can't delay a masquerade. Failing to complete the fix up here will
> result in a masqueraded (zombie) channel with an active session.
> Anything using that session will be pointing to the Zombie channel, and
> - assuming they don't blow up in some spectacular fashion - have a high
> likelihood of simply failing.

I think we need to actually explore the consequences of this some 
instead of sticking to theoretical. I suspect that if there were a task 
ahead of the fixup to hang stuff up it would probably keep the zombie in 
limbo, so that's one thing.

> Even if we assume that the task can be put at the front of the
> taskprocessor queue, any operation currently in flight will be operating
> on an invalid channel.
>
> I only see two possibilities here:
>
>  1. Fix the locking inversion between the task processor and the entity
>     pushing the synchronous task. That is, you can't hold a channel lock
>     when pushing a synchronous task.

Going down this road

>  2. Go with a modified version of the patch, but assume that the session
>     object has to be protected as well.

I think pending some other miracle or delaying the fixup not being as 
bad as we all think it is... that'll be the solution.

-- 
Joshua Colp
Digium, Inc. | Senior Software Developer
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at:  www.digium.com  & www.asterisk.org



More information about the asterisk-dev mailing list