[Asterisk-Users] 1.2.9.1 crashed today

Matt mhoppes at gmail.com
Wed Jun 21 05:11:27 MST 2006


On 6/21/06, BJ Weschke <bweschke at gmail.com> wrote:
> On 6/21/06, Matt <mhoppes at gmail.com> wrote:
> > Ok,
> > So here's some information I've, to this point, left out.   I applied
> > the patch to allow * to be pressed in queues to park a call (*270).
> > After reverting the patch the system seems stable.  So, it almost
> > seems like the crash is directly related to the number of times
> > someone parks a call that came in a queue.
> >
> > I don't understand, though....
> >
> >                                /* terminates call */
> >                              ast_frfree(f);
> >                              f = NULL;
> >
> > How does removing those 2 lines cause asterisk to crash?   Basically
> > the code looks for a *, if it sees it it runs that... so the patch
> > removes those lines.. so when asterisk sees a * it doesn't do
> > anything.    The variables are so cryptic I can't exactly figure out
> > what its doing.. is ast_frfree(f) suppose to 'free' something, perhaps
> > that is not getting freed?  But then what is f = NULL.  Yikes, who
> > comes up with these variable names?
> >
>
>  Yes, ast_frfree(..) is supposed to free any allocated memory
> associated with the pointer to the Asterisk frame structure given to
> it. If the structure has already been freed somewhere else in the code
> and you try to call this again, you will segfault Asterisk. If you
> don't call it at all, you will leak memory associated with the
> structure. The pointer is being set to NULL after the call so that
> further checks of the pointer itself will be able to determine that
> the structure has been free'd already and doesn't need to be done
> again (preventing a segfault from calling it twice).
>

Ok... that makes sence, and is probably why asterisk was crashing then
(good news is since reversing the patch and installing clean 1.2.9.1
we've been rock solid over night).   Now.. my question is... how do
those 2 lines of code disconnect a call?



More information about the asterisk-users mailing list