[asterisk-dev] [Code Review] Pickup segfault when multiple pickups of multiple localchan calls

Alec Davis reviewboard at asterisk.org
Fri Aug 5 04:19:53 CDT 2011


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1353/
-----------------------------------------------------------

Review request for Asterisk Developers and rmudgett.


Summary
-------

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 18222.
    https://issues.asterisk.org/jira/browse/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
-------


Thanks,

Alec

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110805/885f687e/attachment.htm>


More information about the asterisk-dev mailing list