[h323plus] Null pointer reference

Ankur Deep Jaiswal ankur at techgentsia.com
Mon May 5 06:07:35 EDT 2014


Hi,

I was able to solve that issue by type casting 'roundTripDelayRate' to
int64_t  at h323.cxx:6764 . PInt64 supports type casting.

i have a serious doubt about the code though ,

in this code starting at line 6758

void H323Connection::MonitorCallStatus()
{
  if (!Lock())
    return;

  if (roundTripDelayTimer > 0 && !roundTripDelayTimer.IsRunning()) {
    roundTripDelayTimer = roundTripDelayRate;
    StartRoundTripDelay();
  }


the 'roundTripDelayTimer' is never initialized any where in the code. it is
also a protected member of the class,as such the condition in the if block
may never be entered.


so going by previous definiton at v1.26.3

where the code is
void H323Connection::MonitorCallStatus()
{
  if (!Lock())
    return;

  if (endpoint.GetRoundTripDelayRate() > 0 &&
!roundTripDelayTimer.IsRunning()) {
    roundTripDelayTimer = endpoint.GetRoundTripDelayRate();
    StartRoundTripDelay();
  }


shouldn't the code be like this .

void H323Connection::MonitorCallStatus()
{
  if (!Lock())
    return;

  if (roundTripDelayRate > 0 && !roundTripDelayTimer.IsRunning()) {
    roundTripDelayTimer = ((int64_t)roundTripDelayRate);
    StartRoundTripDelay();
  }





On Mon, May 5, 2014 at 2:42 PM, Ankur Deep Jaiswal <ankur at techgentsia.com>wrote:

> Hi,
> This is the complete compile trace . i dont get this with v1.26.3
>
> [CC] h323.cxx
> h323.cxx: In member function ‘void H323Connection::MonitorCallStatus()’:
> h323.cxx:6764:25: error: ambiguous overload for ‘operator=’ (operand types
> are ‘PTimer’ and ‘PInt64 {aka long long int}’)
>      roundTripDelayTimer = roundTripDelayRate;
>                          ^
> h323.cxx:6764:25: note: candidates are:
> In file included from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib.h:66:0,
>                  from h323.cxx:30:
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:228:14:
> note: PTimer& PTimer::operator=(const PTimer&)
>      PTimer & operator=(
>               ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:48:11:
> note: PTimer& PTimer::operator=(int16_t)
>      cls & operator=( int16_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:49:11:
> note: PTimer& PTimer::operator=(uint16_t)
>      cls & operator=(uint16_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:50:11:
> note: PTimer& PTimer::operator=(int32_t)
>      cls & operator=( int32_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:51:11:
> note: PTimer& PTimer::operator=(uint32_t)
>      cls & operator=(uint32_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.3/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:52:11:
> note: PTimer& PTimer::operator=(int64_t)
>      cls & operator=( int64_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:53:11:
> note: PTimer& PTimer::operator=(uint64_t)
>      cls & operator=(uint64_t rhs)              { this->SetInterval(rhs);
> return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:54:11:
> note: PTimer& PTimer::operator=(const PTimeInterval&)
>      cls & operator=(const PTimeInterval & rhs) {
> this->SetInterval(rhs.GetMilliSeconds()); return *this; } \
>            ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/timer.h:232:5:
> note: in expansion of macro ‘PTIMER_OPERATORS’
>      PTIMER_OPERATORS(PTimer);
>      ^
> In file included from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/pnat.h:43:0,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/ptlib_extras.h:51,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/h235auth.h:51,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/h323con.h:46,
>                  from h323.cxx:37:
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/pnat.h: At global
> scope:
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PNatMethod_STUN_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/pnat.h:627:1:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>  PPLUGIN_STATIC_LOAD(STUN, PNatMethod);
>  ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_H235Authenticator_MD5_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h235auth.h:399:3: note: in
> expansion of macro ‘PPLUGIN_STATIC_LOAD’
>    PPLUGIN_STATIC_LOAD(MD5,H235Authenticator);
>    ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_H235Authenticator_CAT_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h235auth.h:451:3: note: in
> expansion of macro ‘PPLUGIN_STATIC_LOAD’
>    PPLUGIN_STATIC_LOAD(CAT,H235Authenticator);
>    ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PVideoInputDevice_FakeVideo_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/videoio.h:1195:1:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>  PPLUGIN_STATIC_LOAD(FakeVideo, PVideoInputDevice);
>  ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PVideoInputDevice_FFMPEG_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/videoio.h:1203:3:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>    PPLUGIN_STATIC_LOAD(FFMPEG, PVideoInputDevice);
>    ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PVideoInputDevice_YUVFile_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/videoio.h:1208:3:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>    PPLUGIN_STATIC_LOAD(YUVFile, PVideoInputDevice);
>    ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PVideoOutputDevice_NULLOutput_loader’ defined but not
> used [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/videoio.h:1240:1:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>  PPLUGIN_STATIC_LOAD(NULLOutput, PVideoOutputDevice);
>  ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_H224_Handler_H281_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h224/h281handler.h:244:8:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>         PPLUGIN_STATIC_LOAD(H281, H224_Handler);
>         ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_H460_Feature_Std18_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h460/h460_std18.h:101:5:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>      PPLUGIN_STATIC_LOAD(Std18, H460_Feature);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_H460_Feature_Std19_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h460/h460_std18.h:166:5:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>      PPLUGIN_STATIC_LOAD(Std19, H460_Feature);
>      ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/plugin.h:199:13:
> warning: ‘PPlugin_PNatMethod_H46019_loader’ defined but not used
> [-Wunused-variable]
>    int const PPlugin_##serviceType##_##serviceName##_loader =
> PPlugin_##serviceType##_##serviceName##_link();
>              ^
> /home/ankur/h323plustest1.26.x/h323plus/include/h460/h46018_h225.h:439:8:
> note: in expansion of macro ‘PPLUGIN_STATIC_LOAD’
>         PPLUGIN_STATIC_LOAD(H46019,PNatMethod);
>         ^
> In file included from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/pprocess.h:44:0,
>                  from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/icmpsock.h:41,
>                  from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/sockets.h:69,
>                  from
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/pnat.h:41,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/ptlib_extras.h:51,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/h235auth.h:51,
>                  from
> /home/ankur/h323plustest1.26.x/h323plus/include/h323con.h:46,
>                  from h323.cxx:37:
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/pluginmgr.h:175:15:
> warning: ‘PFactoryLoader::PluginLoaderStartup_loader’ defined but not used
> [-Wunused-variable]
>  PFACTORY_LOAD(PluginLoaderStartup);
>                ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/pfactory.h:500:15:
> note: in definition of macro ‘PFACTORY_LOAD’
>      int const ConcreteType##_loader = ConcreteType##_link(); \
>                ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/url.h:550:17:
> warning: ‘PFactoryLoader::PURL_HttpLoader_loader’ defined but not used
> [-Wunused-variable]
>    PFACTORY_LOAD(PURL_HttpLoader);
>                  ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/pfactory.h:500:15:
> note: in definition of macro ‘PFACTORY_LOAD’
>      int const ConcreteType##_loader = ConcreteType##_link(); \
>                ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptclib/url.h:553:17:
> warning: ‘PFactoryLoader::PURL_FtpLoader_loader’ defined but not used
> [-Wunused-variable]
>    PFACTORY_LOAD(PURL_FtpLoader);
>                  ^
> /home/ankur/h323plustest1.26.x/ptlibbuild/include/ptlib/pfactory.h:500:15:
> note: in definition of macro ‘PFACTORY_LOAD’
>      int const ConcreteType##_loader = ConcreteType##_link(); \
>
>
> On Mon, May 5, 2014 at 2:26 PM, Jan Willamowius <jan at willamowius.de>wrote:
>
>> Hi,
>>
>> I'm still using PTLib 2.10.x. I'm pretty sure the CVS compiles with
>> that.
>>
>> Regards,
>> Jan
>>
>> Ankur Deep Jaiswal wrote:
>> > Hi,
>> > I am unable to build the new cvs (v.1.26.3 builds fine). i have tried
>> ptlib
>> > 2.12.8 and 2.12.9
>> >
>> > while building i get this error
>> >
>> > [CC] h323.cxx
>> > h323.cxx: In member function ‘void H323Connection::MonitorCallStatus()’:
>> > h323.cxx:6764:25: error: ambiguous overload for ‘operator=’ (operand
>> types
>> > are ‘PTimer’ and ‘PInt64 {aka long long int}’)
>> >      roundTripDelayTimer = roundTripDelayRate;
>> >
>> > help appreciated
>> >
>> > On Fri, May 2, 2014 at 11:30 PM, Jan Willamowius <jan at willamowius.de>
>> wrote:
>> >
>> > > Hi Ankur,
>> > >
>> > > thanks for the bug report.
>> > >
>> > > I've replaces the Assert with a null pointer check to avoid the crash.
>> > > Please try the CVS.
>> > >
>> > > Regards,
>> > > Jan
>> > >
>> > > --
>> > > Jan Willamowius, Founder of the GNU Gatekeeper Project
>> > > EMail  : jan at willamowius.de
>> > > Website: http://www.gnugk.org
>> > > Support: http://www.willamowius.com/gnugk-support.html
>> > >
>> > > Relaxed Communications GmbH
>> > > Frahmredder 91
>> > > 22393 Hamburg
>> > > Geschäftsführer: Jan Willamowius
>> > > HRB 125261 (Amtsgericht Hamburg)
>> > > USt-IdNr: DE286003584
>> > >
>> > > Ankur Deep Jaiswal wrote:
>> > > > Hi,
>> > > > I am using H323plus v 1.26.3.
>> > > > With the External rtp example, I am getting a 'Assertion fail: Null
>> > > pointer
>> > > > reference, file channels.cxx, line 629, Error=22'
>> > > > while trying to open a channel with capability G.711-ALaw-64k.
>> > > > it happens at H323_ExternalRTPChannel::OnSendingPDU at line number
>> 1329.
>> > > >
>> > > > Help appreciated
>> > > > --
>> > > > Ankur Deep Jaiswal
>> > >
>> > >
>> > >
>> >
>> >
>> > --
>> > Ankur Deep Jaiswal
>>
>>
>> --
>> Jan Willamowius, jan at willamowius.de, http://www.gnugk.org/
>>
>>
>
>
> --
> Ankur Deep Jaiswal
>



-- 
Ankur Deep Jaiswal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.packetizer.com/pipermail/h323plus/attachments/20140505/70dc0a47/attachment-0002.html>


More information about the h323plus mailing list