[h323plus] Crash in Ptlib...........

Robert Jongbloed robert.jongbloed at bigpond.com
Thu May 29 20:33:49 EDT 2008


While I won't say the ASN code is completely bug free (a debugged program is
merely on for which the failing condition has not yet been found) it is also
highly unlikely to be the source of your problem. The last bug was found in
July, 2004!

 

What does tend to happen is the ASN code does a LOT of small memory
allocations so is extremely susceptible to heap corruption. However the act
of corrupting the heap could, unfortunately, be ANYWHERE. And at risk of
causing offense, the most likely place is in your code. After all a lot of
people use H323plus and even more use PTLib and are not seeing this crash.

 

This type of problem is notoriously difficult to find. The reason is that
the crash point can have absolutely nothing to do with the cause of the
crash which is in a completely different function and possibly even
different TIME. The only way to fix them is divine inspiration and very good
coding practices. The most common reasons are the "dangling pointer" and the
"uninitialized pointer". If you don't know those terms go find a textbook
and a better university.

 

Robert.

 

From: h323plus-bounces at lists.packetizer.com
[mailto:h323plus-bounces at lists.packetizer.com] On Behalf Of mohammad alam
Sent: Friday, 30 May 2008 12:01 AM
To: H323plus
Cc: cheersalam at yahoo.co.in
Subject: [h323plus] Crash in Ptlib...........

 

Simon

After 8-10th times of placing and ending call (without restarting
application) my Application crashes in ptlib in file asner.cxx at line 2079
(Below at line no.6 for your reference)
Crashes are at both Local and Remote side on same line


1  PASN_Choice & PASN_Choice::operator=(const PASN_Choice & other)
2  {
3   if (&other == this) // Assigning to ourself, just do nothing.
4     return *this;
5
6   if(choice!=NULL)
7   {
8       delete choice;
9       choice = NULL;
10   }
11
12   PASN_Object::operator=(other);
13
14   numChoices = other.numChoices;
15   names = other.names;
16   namesCount = other.namesCount;
17
18   if (other.CheckCreate())
19     choice = (PASN_Object *)other.choice->Clone();
20   else
21     choice = NULL;
22
23   return *this;
24 }



I am using this in my Loadcapabilities function for H.263 CIF Image Size

     capabilities.RemoveAll();        //called only once
     AddAllCapabilities(0, 0, "*");     //called only once
     AddAllUserInputCapabilities(0, 1); //called only once

     preferenceorder.AppendString

(H263_CIF);
     preferenceorder.AppendString(H263_QCIF);
     preferenceorder.AppendString(H263_4CIF);
     preferenceorder.AppendString(H263_16CIF);
     preferenceorder.AppendString(H261_CIF);
     preferenceorder.AppendString(H261_QCIF);
     SetVideoFrameSize(H323Capability::cifMPI);
capabilities.Reorder(preferenceorder);

The last few lines of PTRACE are

 2:26.027   H225 Calle...er:22641e8 H225  Handling PDU: Connect
callRef=11394
 2:26.027  H225 Calle...er:22641e8 H225  Set protocol version to 6 and
implying H.245 version 13
 2:26.027  H225 Calle...er:22641e8 H225  Set remote party name: "admin"
 2:26.027  H225 Calle...er:22641e8 H225  Set remote application name: "
VCS   1.0.0 (H323plus v1.20beta3)   9/61"
 2:26.027  H225 Calle...er:22641e8 H225  Received connect PDU.
 2:26.027  H225 Calle...er:22641e8 H323TCP     Connecting to
10.8.4.144:1412 <http://10.8.4.144:1412/>  (local port=0)
 2:26.038  H225 Calle...er:22641e8 H323TCP     SetOption(IP_TOS) failed:
Invalid argument
 2:26.038  H225 Calle...er:22641e8 H323TCP     Started connection:
host=10.8.4.144:1412 <http://10.8.4.144:1412/> , if=10.8.4.148:2717
<http://10.8.4.148:2717/> , handle=1280
 2:26.038  H225 Calle...er:22641e8 H225  Fast Start FALSE fastStartState
FastStartDisabled
 2:26.038  H225 Calle...er:22641e8 H245  Handle control channel
 2:26.038  H225 Calle...er:22641e8 H245  Start control negotiations
 2:26.038  H225 Calle...er:22641e8 H245  Sending TerminalCapabilitySet:
outSeq=1
 2:26.038  H245:6f3ff60      H245  Started thread
 2:26.038  H245:6f3ff60      H245  Handle control channel
 2:26.038  H245:6f3ff60      H245  Start control negotiations

CRASH..>>>>>>>>>>>>>>>>>>>>>>


This crash is consistent. Crashes anytime after 5th call..
Your comments are needed.
Where I am going wrong.....

Alam

Regards
Mohammad Alam

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.packetizer.com/pipermail/h323plus/attachments/20080530/38847686/attachment-0004.html>


More information about the h323plus mailing list