Re: gnugk stable 2.3.5 crash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dennis,

I'm pretty sure its not that line. When you look at it, all pointers
used, get checked first. My guess is that this is a threading issue and
we corrupt the memory some place else. I don't think its a late RTCP,
because the RTP sockets get deleted long before the CallRec.

The code has been there since 2009, but since 2.3.4 I made sure its
disabled by default (you need to set EnableRTCPStats=1) so hopefully not
too many people have ever seen this issue.

I'm a bit caught in the middle of this: I think Simon put in the code
to save the media IPs and Yuriy provided the code to sniff the RTCP
packets.

If anybody is able to reproduce this crash in a controlled environment,
I'll try to fix it, but the way it is right now I'm a bit in the dark.

Regards,
Jan


Denis Kochmashev "Enforta" wrote:
> Jan,
> 
> there is definitely something wrong with that line. It provokes a crash even
> in my pre-2.3.2. Can this happen because gnugk is trying to handle "late"
> RTCP packets after a call was finished and an appropriate CallRec was
> already destoyed?
> 
> -----Original Message-----
> From: Jan Willamowius [mailto:jan@xxxxxxxxxxxxxx] 
> Sent: Tuesday, August 16, 2011 6:49 PM
> To: openh323gk-users@xxxxxxxxxxxxxxxxxxxxx
> Subject: Re:  gnugk stable 2.3.5 crash
> 
> Hi Yuriy,
> 
> the crashing line is almost unchanged from the code you submitted in
> 2009. Its crashing in the strcmp() that compares the media IP to the
> fromIP. Since the fromIP looks ok fine your core dump, maybe the media
> IP gets changed that instant and we need a lock to fix that race
> condition ?
> 
> Regards,
> Jan
> 
> 
> Georgiewskiy Yuriy wrote:
> > hm, we use patch fo codec details which seems affect ProxyChannel.cxx line
> numbers,
> > it is in ProxySocket::Result UDPProxySocket::ReceiveData():
> > 
> > if (isRTCP && m_call && (*m_call) && m_EnableRTCPStats) {
> > 	bool direct = ((*m_call)->GetSRC_media_control_IP() ==
> fromIP.AsString()); <-5650 line
> > 		PIPSocket::Address addr = (DWORD)0;
> > 		(*m_call)->GetMediaOriginatingIp(addr);
> > 		if (buflen < 4) {
> > 			PTRACE(1, "RTCP\tInvalid RTCP frame");
> > 			return NoData;
> > 		}
> > 
> > 
> > JW>> (gdb) bt
> > JW>> #0  0x00007fbcd7fb5126 in ?? () from /lib/libc.so.6
> > JW>> #1  0x00007fbcdaab56dc in PString::InternalCompare
> (this=0x7fbcd4116a50, offset=0, length=2147483647, cstr=0x7fbccc0f7950
> "91.210.104.61")
> > JW>>      at ptlib/common/contain.cxx:1268
> > JW>> #2  0x00007fbcdaab48f2 in PString::Compare (this=0x7fbcd4116a50,
> obj=...) at ptlib/common/contain.cxx:970
> > JW>> #3  0x00000000004b8dee in PObject::operator== (this=0x7fbcd4116a50,
> obj=...) at /usr/local/src/ptlib-2.8.4/include/ptlib/object.h:1162
> > JW>> #4  0x00007fbcdaaaf57b in PString::operator== (this=0x7fbcd4116a50,
> obj=...) at /usr/local/src/ptlib-2.8.4/include/ptlib/contain.inl:117
> > JW>> #5  0x0000000000569c36 in UDPProxySocket::ReceiveData
> (this=0x19fbf70) at ProxyChannel.cxx:5650

-- 
Jan Willamowius, jan@xxxxxxxxxxxxxx, http://www.gnugk.org/

------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system, 
user administration capabilities and model configuration. Take 
the hassle out of deploying and managing Subversion and the 
tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2
_______________________________________________________

Posting: mailto:Openh323gk-users@xxxxxxxxxxxxxxxxxxxxx
Archive: http://sourceforge.net/mailarchive/forum.php?forum_name=openh323gk-users
Unsubscribe: http://lists.sourceforge.net/lists/listinfo/openh323gk-users
Homepage: http://www.gnugk.org/


[Index of Archives]     [SIP]     [Open H.323]     [Gnu Gatekeeper]     [Asterisk PBX]     [ISDN Cause Codes]     [Yosemite News]

  Powered by Linux