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

Alec Davis reviewboard at asterisk.org
Fri Aug 5 14:12:41 CDT 2011



> On Aug. 5, 2011, 9:15 a.m., mjordan wrote:
> > trunk/main/channel.c, line 2841
> > <https://reviewboard.asterisk.org/r/1353/diff/1/?file=17719#file17719line2841>
> >
> >     Remove your name from the error statement, as well as all the "===" signs.  Your error statement should be formatted in the same manner as other Asterisk error statements.

It's just debug code and can go


> On Aug. 5, 2011, 9:15 a.m., mjordan wrote:
> > trunk/main/channel.c, line 2843
> > <https://reviewboard.asterisk.org/r/1353/diff/1/?file=17719#file17719line2843>
> >
> >     Remove the commented lines of code.  Comments should also always use C-style comments; not C++ style.

It's just debug code and can go


> On Aug. 5, 2011, 9:15 a.m., mjordan wrote:
> > trunk/main/features.c, line 5780
> > <https://reviewboard.asterisk.org/r/1353/diff/1/?file=17720#file17720line5780>
> >
> >     This could be reduced to:
> >     
> >     return (ast_channel_datastore_find(chan, &packup_active, NULL) != NULL);

It's just debug code and can go


> On Aug. 5, 2011, 9:15 a.m., mjordan wrote:
> > trunk/include/asterisk/features.h, line 123
> > <https://reviewboard.asterisk.org/r/1353/diff/1/?file=17718#file17718line123>
> >
> >     Provide a doxygen comment with \brief, \param, and \returns fields

It's just debug code and can go


> On Aug. 5, 2011, 9:15 a.m., mjordan wrote:
> > trunk/include/asterisk/channelstate.h, line 46
> > <https://reviewboard.asterisk.org/r/1353/diff/1/?file=17717#file17717line46>
> >
> >     Adding a new channel state seems like it would have a rather large impact.  What tests have you done to ensure that adding a new state a channel can be in doesn't impact any other Asterisk dialplan functions or applications?
> >     
> >     Fix comment as well to be "Line is being picked up"

seen the . before Line.


- Alec


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


On Aug. 5, 2011, 4:27 a.m., Alec Davis wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1353/
> -----------------------------------------------------------
> 
> (Updated Aug. 5, 2011, 4:27 a.m.)
> 
> 
> 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 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
> -------
> 
> 
> Thanks,
> 
> Alec
> 
>

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


More information about the asterisk-dev mailing list