[Asterisk-Users] RE: Asterisk problem

TC trclark at shaw.ca
Thu Dec 18 08:29:35 MST 2003


> I have then downloaded newer version of the Asterisk about 10 days ago,
but
> then my Asterisk would start to crash on me, the module would just stop
> running by itself and I had to restart the Asterisk. Sometimes, it would
> just stop running, but 75% of the time, I would see this error message:
>
> Connected to Asterisk CVS-12/06/03-03:06:28 currently running on localhost
> (pid = 23720)
>     -- Remote UNIX connection
> localhost*CLI> /usr/sbin/safe_asterisk: line 6: 23720 Segmentation fault
> asterisk ${ASTARGS} 1>&/dev/${TTY} </dev/${TTY}
I have it core dump on me with latest cvs,
at chan_h323.c:1164->connection_made ->         if (!p->owner)

I beleive this is a race condition on the the channel, since the struc 'p'
is valid
but the channel appears to have vanished right after 'find_call'

do a back trace on the core file when it dumps, compare is to this

#0  connection_made (call_reference=1153301536) at chan_h323.c:1164
#1  0x44bd8c23 in
MyH323EndPoint::OnConnectionEstablished(H323Connection&, PString const&)
(this=0x8164878,
    connection=@0x81ca1d8, estCallToken=@0x81ca1f4) at ast_h323.cpp:360
#2  0x4544bab1 in H323Connection::OnEstablished() () from
/usr/src/openh323/lib/libh323_linux_x86_r.so.1.12.2
#3  0x45453629 in H323Connection::InternalEstablishedConnectionCheck() ()
   from /usr/src/openh323/lib/libh323_linux_x86_r.so.1.12.2
#4  0x4544af0a in H323Connection::HandleSignalPDU(H323SignalPDU&) ()
   from /usr/src/openh323/lib/libh323_linux_x86_r.so.1.12.2
#5  0x4544aba2 in H323Connection::HandleSignallingChannel() () from
/usr/src/openh323/lib/libh323_linux_x86_r.so.1.12.2
#6  0x45457f45 in H225CallThread::Main() () from
/usr/src/openh323/lib/libh323_linux_x86_r.so.1.12.2
#7  0x44dfb3c4 in PThread::PX_ThreadStart(void*) () from
/usr/src/pwlib/lib/libpt_linux_x86_r.so.1.5.2
#8  0x400279e1 in pthread_start_thread () from /lib/i686/libpthread.so.0

void connection_made(unsigned call_reference)
{
        struct ast_channel *c = NULL;
        struct oh323_pvt *p = NULL;

        p = find_call(call_reference);

        if (!p)
                ast_log(LOG_ERROR, "Something is wrong: connection\n");


        if (!p->owner) {
                printf("Channel has no owner\n");
                return;
        }
        c = p->owner;

        ast_setstate(c, AST_STATE_UP);
        return;
}





More information about the asterisk-users mailing list