For the 2nd one it seems like referencing already deleted socket for me.
I don't see any direct problem in the code, but after some analysis two
things come to my mind:
1) for NAT sockets, they are attached to associated endpoints.
What happens, if there is an error during reading the socket (TCP
connection reset or similar).
From the code I see OnError and Close is called, but none of these
functions detach the socket from its endpoint.
2) in the CallSignalSocket::OnInformation function, if there happens
that an endpoint has already another NAT socket attached:
if (natsocket != NULL && natsocket != this)
we call natsocket->SetDeletable() and natsocket->Close() for a socket
that can be owned by another proxy handler. This may cause a rare race
condition,
although this is probably not the case with the reported core dump.
I guess a similar issue is with EndpointRec::SetSocket.
----- Original Message -----
From: "Jan Willamowius" <[EMAIL PROTECTED]>
Sent: Wednesday, May 14, 2008 11:03 PM
> Hi Grzegorz,
>
> great bug reports, again. Thanks!
>
> As you say, the first one is easy and I've fixed it for 2.2.8 and
> 2.2.7_STABLE. I'm not sure abut the 2nd one.
>
> Regards,
> Jan
>
> Grzegorz Stanislawski wrote:
>> Hi
>> Here comes another two:
>> This one is easy, check if m_call=NUL and return than (maybe with some
>> warning about alerting msg for deleted call), in ProxyChannel.cxx line
>> 2307
>> #0 CallRec::SetAlertingTime (this=0x0, tm=1210724824)
>> at /usr/local/src/h323plus/../pwlib/include/ptlib/psync.h:133
>> #1 0x0811b27a in CallSignalSocket::OnAlerting (this=0x85f7788,
>> msg=0x41a809c8)
>> at ProxyChannel.cxx:2307
>> #2 0x081288bf in CallSignalSocket::ReceiveData (this=0x85f7788)
>> at ProxyChannel.cxx:965
>> #3 0x0810b9ee in ProxyHandler::ReadSocket (this=0x81c2978,
>> socket=0x85f7788)
>> at ProxyChannel.cxx:5031
>> [..]
>> Second one:
>> #0 0x080a8801 in EndpointRec::SetSocket (this=0x41cb14e0,
>> socket=0x434a1a68)
>> at /usr/local/src/h323plus/../pwlib/include/ptlib/pstring.h:1945
>> 1945 string.PrintOn(stream);
>> (gdb) bt
>> #0 0x080a8801 in EndpointRec::SetSocket (this=0x41cb14e0,
>> socket=0x434a1a68)
>> at /usr/local/src/h323plus/../pwlib/include/ptlib/pstring.h:1945
>> #1 0x08110e77 in CallSignalSocket::OnInformation (this=0x434a1a68,
>> msg=0x429b3300) at ProxyChannel.cxx:2391
>> #2 0x08128713 in CallSignalSocket::ReceiveData (this=0x434a1a68)
>> at ProxyChannel.cxx:977
>> #3 0x0810b9ee in ProxyHandler::ReadSocket (this=0x81cf340,
>> socket=0x434a1a68)
>> at ProxyChannel.cxx:5031
>> [..]
>> that inline PrintOn introduces a little mess in gdb, but i took a look
>> into EndpointRec::SetSocket
>> trace was set to 2 so problem is in line 504 of RasTtbl.cxx
>> (gdb) p m_natsocket->m_name
>> $7 = {<PCharArray> = {<PBaseArray<char>> = {<PAbstractArray> =
>> {<PContainer> = {<PObject> = {_vptr.PObject = 0x42900248}, reference =
>> 0x65766965},
>> elementSize = 2065709668,
>> theArray = 0x7120200a <Address 0x7120200a out of bounds>,
>> allocatedDynamically = 1882272569}, <No data fields>}, <No data
>> fields>}, <No data fields>}
>>
>> Grzegorz Stanislawski
>
> --
> Jan Willamowius, [EMAIL PROTECTED], http://www.gnugk.org/
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________________
Posting: mailto:[email protected]
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/