Re: Test the upcoming GNU Gatekeeper 2.3.2!

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

 



I've put a fix into the CVS, maybe one of you can re-run the test if it
a.) stopped the leak and b.) doesn't break anything.

Thanks,
Jan


Jan Willamowius wrote:
> Yuriy,
> 
> it looks like the code for UDPProxySocket::BuildReceiverReport() that
> you submitted yourself is leaking. The endpoints I'm usually testing
> with don't trigger this code, but it looks like the allocated
> ReceiverReport never gets freed or maybe there is no need to allocate
> it at all.
> 
> Maybe you can take a look at that code ?
> 
> Regards,
> Jan
> 
> 
> Jan Willamowius wrote:
> > Andrew,
> > 
> > as the manual say, ProxyAlways=1 is stronger than all other proxy
> > related switches. ;-)
> > 
> > The leaks in your valgrind output going through PPluginManager are
> > those false positives I talked about and are no real leaks, but there
> > might actually be a leak BuildReceiverReport().
> > 
> > Regards,
> > Jan
> > 
> > 
> > Andrew Herdman wrote:
> > > Thanks Jan, I'll look at doing that.
> > > 
> > > In the meantime I threw valgrind at an executable I had already, and ran 
> > > 40 groups of 25 (1000) calls through it.  Although proxy enable is 0, 
> > > the calls were still proxied (bug?), I've attached my gatekeeper.ini, a 
> > > statistics from the control interface and the vg output.  I'm not a 
> > > programmer vg looks like it found something, but I could be very wrong, 
> > > feel free to tell me this data is useless without a debug build.  GNUGK 
> > > was built 20100413 at ~7am EDT.
> > > 
> > > Oh and you were right about valguard and performance, it would peak at 
> > > 155% CPU utilization on the test box, fortunately there are 4 full cores 
> > > on the box, and 4 hyperthreaded ones.
> > > 
> > > Andrew
> > > 
> > > Gatekeeper(GNU) Version(2.3.2) 
> > > Ext(pthreads=1,radius=0,mysql=1,pgsql=0,firebird=0,odbc=0,sqlite=0,large_fdset=4096,crypto/ssl=1,h46018=1,h46023=1) 
> > > Build(Apr 13 2010, 13:38:46) Sys(Linux i686 2.6.26-2-686)
> > > 
> > > 
> > > -- Endpoint Statistics --
> > > Total Endpoints: 4  Terminals: 3  Gateways: 1  NATed: 0
> > > Cached Endpoints: 0  Terminals: 0  Gateways: 0
> > > -- Call Statistics --
> > > Current Calls: 0 Active: 0 From Neighbor: 0 From Parent: 0
> > > Total Calls: 1000  Successful: 1000  From Neighbor: 0  From Parent: 0
> > > Startup: Thu, 15 Apr 2010 07:24:19 -0400   Running: 0 days 00:54:13
> > > 
> > > cat gatekeeper.ini
> > > [Gatekeeper::Main]
> > > Fortytwo=42
> > > Name=GNUGK000
> > > Home=127.0.0.1,10.10.10.253
> > > Bind=127.0.0.1,10.10.10.253
> > > TimeToLive=600
> > > ;TotalBandwidth=200000
> > > StatusPort=7000
> > > StatusTraceLevel=1
> > > UseBroadcastListener=0
> > > CompareAliasType=1
> > > CompareAliasCase=0
> > > TimestampFormat=MySQL
> > > 
> > > 
> > > [LogFile]
> > > Rotate=daily
> > > RotateTime=00:00
> > > 
> > > 
> > > [RoutedMode]
> > > GKRouted=1
> > > H245Routed=0
> > > CallSignalPort=1720
> > > CallSignalHandlerNumber=10
> > > RtpHandlerNumber=8
> > > AcceptNeighborsCalls=1
> > > AcceptUnregisteredCalls=1
> > > RemoveH245AddressOnTunneling=0
> > > RemoveCallOnDRQ=0
> > > DropCallsByReleaseComplete=1
> > > SendReleaseCompleteOnDRQ=1
> > > SupportNATedEndpoints=1
> > > SupportCallingNATedEndpoints=1
> > > TreatUnregisteredNAT=1
> > > ForwardOnFacility=1
> > > ShowForwarderNumber=0
> > > Q931PortRange=20000-20999
> > > H245PortRange=30000-30999
> > > SetupTimeout=8000
> > > SignalTimeout=30000
> > > AlertingTimeout=60000
> > > TcpKeepAlive=1
> > > TranslateFacility=1
> > > SocketCleanupTimeout=5000
> > > EnableH46018=0
> > > 
> > > 
> > > [Proxy]
> > > Enable=0
> > > ProxyAlways=1
> > > T120PortRange=40000-49999
> > > RTPPortRange=50000-59999
> > > ProxyForNAT=1
> > > ProxyForSameNAT=1
> > > DisableH460Call=1
> > > DisableRTPQueuing=1
> > > EnableRTPMute=0
> > > 
> > > 
> > > [ModeSelection]
> > > 
> > > [RasSrv::RRQFeatures]
> > > 
> > > [RasSrv::ARQFeatures]
> > > 
> > > [RasSrv::LRQFeatures]
> > > NeighborTimeout=2
> > > SendRetries=2
> > > ForwardHopCount=2
> > > AcceptForwardedLRQ=1
> > > ForwardResponse=0
> > > ForwardLRQ=depends
> > > AcceptNonNeighborLRQ=1
> > > AcceptNonNeighborLCF=1
> > > 
> > > 
> > > [RoutingPolicy]
> > > default=internal,neighbor,explicit
> > > 
> > > 
> > > [RoutingPolicy::OnARQ]
> > > default=internal,neighbor,explicit
> > > 
> > > 
> > > [RoutingPolicy::OnLRQ]
> > > default=internal,neighbor,explicit
> > > 
> > > 
> > > [GkStatus::Auth]
> > > rule=allow
> > > 
> > > [RasSrv::RewriteE164]
> > > 
> > > [RasSrv::Neighbors]
> > > 
> > > [RasSrv::GWPrefixes]
> > > MCU005-064034031178=1868901,1868902,1868903,1868904
> > > 
> > > [RasSrv::PermanentEndpoints]
> > > 10.10.10.178=MCU005-064034031178;1868901,1868902,1868903,1868904
> > > 
> > > [Gatekeeper::Auth]
> > > default=allow
> > > 
> > > 
> > > 
> > > [CallTable]
> > > FileAcct=sufficient;start,stop,connect,on,off
> > > 
> > > [FileAcct]
> > > DetailFile=/var/log/gnugk/CDR.txt
> > > StandardCDRFormat=1
> > > TimestampFormat=MySQL
> > > Rotate=daily
> > > Rotatetime=00:00
> > > 
> > > 
> > > [Gatekeeper::Acct]
> > > FileAcct=sufficient;start,stop,connect,on,off
> > > 
> > > 
> > > 
> > >  cat vg.log
> > > ==31059== Memcheck, a memory error detector.
> > > ==31059== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al.
> > > ==31059== Using LibVEX rev 1854, a library for dynamic binary translation.
> > > ==31059== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
> > > ==31059== Using valgrind-3.3.1-Debian, a dynamic binary instrumentation 
> > > framework.
> > > ==31059== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al.
> > > ==31059== For more details, rerun with: -v
> > > ==31059==
> > > ==31059== My PID = 31059, parent PID = 3213.  Prog and args are:
> > > ==31059==    GNUGK20100413/File_System/usr/local/bin/gnugk
> > > ==31059==    -t
> > > ==31059==    --config
> > > ==31059==    ./gatekeeper.ini
> > > ==31059==    --output
> > > ==31059==    /var/log/gnugk/gnugk.log
> > > ==31059==    --pid
> > > ==31059==    /var/run/gnugk/gnugk.pid
> > > ==31059==
> > > ==31059==
> > > ==31059== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 46 from 2)
> > > ==31059== malloc/free: in use at exit: 1,668,353 bytes in 26,303 blocks.
> > > ==31059== malloc/free: 29,145,541 allocs, 29,119,238 frees, 
> > > 13,420,176,156 bytes allocated.
> > > ==31059== For counts of detected errors, rerun with: -v
> > > ==31059== searching for pointers to 26,303 not-freed blocks.
> > > ==31059== checked 1,013,672 bytes.
> > > ==31059==
> > > ==31059== 32 bytes in 2 blocks are definitely lost in loss record 11 of 61
> > > ==31059==    at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
> > > ==31059==    by 0x832B9F5: 
> > > PDevicePluginAdapter<PNatMethod>::CreateFactory(PString const&) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x834BE65: PPluginManager::RegisterService(PString 
> > > const&, PString const&, PPluginServiceDescriptor*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8327537: 
> > > _GLOBAL__I_PWLIB_gStaticLoader__STUN_PNatMethod (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x837DF7C: (within 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x804E277: (within 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x837DE98: __libc_csu_init (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x45783EB: (below main) (in /lib/i686/cmov/libc-2.7.so)
> > > ==31059==
> > > ==31059==
> > > ==31059== 5,176 bytes in 3 blocks are possibly lost in loss record 57 of 61
> > > ==31059==    at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
> > > ==31059==    by 0x448699D: __gnu_cxx::free_list::_M_get(unsigned) (in 
> > > /usr/lib/libstdc++.so.6.0.10)
> > > ==31059==    by 0x836B252: 
> > > __gnu_cxx::bitmap_allocator<PContainerReference>::allocate(unsigned) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8365067: PContainerReference::operator new(unsigned) 
> > > (in /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8365548: PContainer::PContainer(int) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x836594A: PAbstractArray::PAbstractArray(int, int) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x836B5C8: PCharArray::PCharArray(int) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8366716: PString::PString(char const*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x834B6A7: 
> > > _GLOBAL__I__ZN14PPluginManager20additionalPluginDirsE (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x837DF7C: (within 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x804E277: (within 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x837DE98: __libc_csu_init (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==
> > > ==31059==
> > > ==31059== 20,592 bytes in 429 blocks are possibly lost in loss record 59 
> > > of 61
> > > ==31059==    at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
> > > ==31059==    by 0x80CB9E7: 
> > > UDPProxySocket::BuildReceiverReport(RTP_ControlFrame const&, int, bool) 
> > > (in /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80DBE59: UDPProxySocket::ReceiveData() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80C84F5: ProxyHandler::ReadSocket(YaSocket*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8055126: SocketsReader::Exec() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80504F7: RegularJob::Run() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x805141B: Worker::Main() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x83467C7: PThread::PX_ThreadStart(void*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x42354BF: start_thread (in 
> > > /lib/i686/cmov/libpthread-2.7.so)
> > > ==31059==    by 0x46426DD: clone (in /lib/i686/cmov/libc-2.7.so)
> > > ==31059==
> > > ==31059==
> > > ==31059== 1,218,576 bytes in 25,387 blocks are definitely lost in loss 
> > > record 61 of 61
> > > ==31059==    at 0x402377E: operator new(unsigned) (vg_replace_malloc.c:224)
> > > ==31059==    by 0x80CB9E7: 
> > > UDPProxySocket::BuildReceiverReport(RTP_ControlFrame const&, int, bool) 
> > > (in /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80DBE59: UDPProxySocket::ReceiveData() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80C84F5: ProxyHandler::ReadSocket(YaSocket*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x8055126: SocketsReader::Exec() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x80504F7: RegularJob::Run() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x805141B: Worker::Main() (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x83467C7: PThread::PX_ThreadStart(void*) (in 
> > > /root/GNUGK20100413/File_System/usr/local/bin/gnugk)
> > > ==31059==    by 0x42354BF: start_thread (in 
> > > /lib/i686/cmov/libpthread-2.7.so)
> > > ==31059==    by 0x46426DD: clone (in /lib/i686/cmov/libc-2.7.so)
> > > ==31059==
> > > ==31059== LEAK SUMMARY:
> > > ==31059==    definitely lost: 1,218,608 bytes in 25,389 blocks.
> > > ==31059==      possibly lost: 25,768 bytes in 432 blocks.
> > > ==31059==    still reachable: 423,977 bytes in 482 blocks.
> > > ==31059==         suppressed: 0 bytes in 0 blocks.
> > > ==31059== Reachable blocks (those to which a pointer was found) are not 
> > > shown.
> > > ==31059== To see them, rerun with: --leak-check=full --show-reachable=yes
> > > 
> > > 
> > > 
> > > 
> > > Jan Willamowius wrote:
> > > > Andrew,
> > > >
> > > > to compile a debug executable, compile PTLib, H323Plus and GnuGk with
> > > > "make debug" instead of "make optnoshared". In addition to that you
> > > > need to copy the shared libraries for PTLib and H323Plus onto your
> > > > library path (a "make install" for both does that, but also copies
> > > > header files onto your system, so I would do it manually).
> > > >
> > > > Regards,
> > > > Jan
> > > >
> > > > Andrew Herdman wrote:
> > > >   
> > > >> Jan;
> > > >>
> > > >> Certainly willing to help out here, can you tell us what if anything 
> > > >> special is needed to build a debug executable?  I use the instructions 
> > > >> on the GNU/GK web page to build from CVS, the instructions for Ubuntu 
> > > >> (but I use Debian).
> > > >>
> > > >> Thanks
> > > >>   Andrew
> > > >>
> > > >>
> > > >> Jan Willamowius wrote:
> > > >>     
> > > >>> Hi Yuriy,
> > > >>>
> > > >>> we both looked for a Radius leak a few months ago and couldn't locate
> > > >>> one, so I would need a much more detailed report how to replicate the
> > > >>> leak.
> > > >>>
> > > >>> Actually anybody using GnuGk can run a check for memory leaks:
> > > >>> There is a tool called 'Valgrind' and its included with most Linux
> > > >>> distributions. Simply compile a GnuGk debug executable and instead of
> > > >>> running it as always "gnugk -c file.ini -t", you run it under Valgrind:
> > > >>> "valgrind --log-file=vg.log --leak-check=yes gnugk -c file.ini -t"
> > > >>>
> > > >>> The you use GnuGk as usual and try to make all different sorts of calls
> > > >>> that might produce a memory leak. After shutting GnuGk down (eg.
> > > >>> with Ctrl-C), vg.log will contain a report with leaks. There will be a
> > > >>> few harmless things, like memory allocated on startup and never
> > > >>> released, but if you managed to trigger a real leak, it will be there,
> > > >>> too, along the source line that allocated it.
> > > >>>
> > > >>> The only downside is that Valgrind will reduce performance
> > > >>> dramatically, so you probably can't use this in a production
> > > >>> environment.
> > > >>>
> > > >>> Regards,
> > > >>> Jan
> > > >>>
> > > >>>
> > > >>> Georgiewskiy Yuriy wrote:
> > > >>>   
> > > >>>       
> > > >>>> Hi.
> > > >>>>
> > > >>>> There is memory leak steel exist somethere in radius support part.
> > > >>>>     
> > > >>>>         
> > > >

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

------------------------------------------------------------------------------
_______________________________________________________

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