[asterisk-dev] [Code Review] Pickup segfault when multiple pickups of multiple localchan calls
Alec Davis
reviewboard at asterisk.org
Fri Aug 5 14:37:53 CDT 2011
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1353/
-----------------------------------------------------------
(Updated Aug. 5, 2011, 2:37 p.m.)
Review request for Asterisk Developers and rmudgett.
Changes
-------
I'm not near any physical equipment for a few days, so can't test. Only have remote access :(
Summary (updated)
-------
The weird issue is why isn't the pickup datastore added to a local channel not working as it should.
This an attempt to fix Asterisk SVN-trunk-r330650 but perhaps the wrong approach.
If ast_can_pickup() can pickup the channel, it needs to change the chan->_state to AST_STATE_PICKUP.
Example dialplan below causes a segfault as ast-hangup removes the same channel as is being picked up.
How to crash it!
dial 801 from 1 phone.
from 2 phones simultaneously dial 800.
segfault!
exten => 801,1,NoOp(Local pickup debug: Ring Phones)
exten => 801,n,Dial(Local/823 at en-phone&Local/824 at en-phone)
exten => 800,1,NoOp(Local pickup: Pickup through Localchan call)
exten => 800,n,Dial(Local/824 at en-pickup&Local/823 at en-pickup)
[en-pickup]
exten => _[0-9*#]!, 1, PickupChan(Local/${EXTEN}@en-phone)
[en-phone]
exten => _[0-9*#]!, 1, Dial(SIP/gxp-${EXTEN},20,rwt)
will remove red blobs, and perhaps ast_pickup_active() test.
This addresses bug ASTERISK-18222.
https://issues.asterisk.org/jira/browse/ASTERISK-18222
Diffs
-----
trunk/include/asterisk/channelstate.h 330704
trunk/include/asterisk/features.h 330704
trunk/main/channel.c 330704
trunk/main/features.c 330704
Diff: https://reviewboard.asterisk.org/r/1353/diff
Testing (updated)
-------
Party A ring in which triggers off 2 internal localchan calls, as per 801 in the example dialplan.
Party B and Party C, attempt to pickup the same calls, using 800 in the example dialplan.
There is another senario thats not right, before even applying this patch.
Party A ring in, which again triggers 2 internal localchan calls as per 801 in dialplan.
Party B and Party C, use *8 to pickup. We then have a NULL OBJ message on screen, and an orpaned channel.
Thanks,
Alec
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110805/0d39f26d/attachment.htm>
More information about the asterisk-dev
mailing list