[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