[omniORB] [Q] deleting static _the_nil_ptr

V S P toreason at fastmail.fm
Thu Apr 9 01:11:50 BST 2009


Hello

Thank you for the reply

I am using
http://dmoulding.googlepages.com/vld
Visual leak detector (probably the best free leak detector for VS 2008)

------------- the test case extract --------------
-- to see leaks must be executed from within VS studio --

#ifdef _DEBUG 
#ifdef WIN32
#include <vld.h>
#endif
#endif

void startup (int argc, char** argv)
{
     orb= CORBA::ORB_init(argc, argv);
try{
     CORBA::Object_var obj =
     orb->resolve_initial_references("OmniNameService");
     assert (!CORBA::is_nil(obj.in()));
}                                                                        
  catch(CORBA::Exception& /*ex*/ ) {
   //let it fall through
  }
  orb->destroy();
  /* note that in
   void
  omniOrbORB::destroy()
  {
    if( _NP_is_nil() )  _CORBA_invoked_nil_pseudo_ref();

   _NP_is_nil() evaluates to 'false'
  */


  return;
}

int main (int argc, char** argv)
{

  startup (argc,argv);

  return 0;
}   

------------------------------


I also enabled tracing to see if Omni is unloading
It appears to be be unloading

---------------------------------------
omniORB: (0) 2009-04-09 00:06:31.521000: Version: 4.1.3
omniORB: (0) 2009-04-09 00:06:31.521000: Distribution date: Tue Sep 23
10:43:28
BST 2008 dgrisby
omniORB: (0) 2009-04-09 00:06:31.631000: Warning: unable to create an
IPv6 socke
t. Unable to obtain the list of IPv6 interface addresses (10047).
omniORB: (0) 2009-04-09 00:06:31.631000: My addresses are:
omniORB: 192.168.0.100
omniORB: 127.0.0.1
omniORB: (0) 2009-04-09 00:06:31.631000: Maximum supported GIOP version
is 1.2
omniORB: (0) 2009-04-09 00:06:31.631000: Native char code sets: UTF-8
ISO-8859-1
.
omniORB: (0) 2009-04-09 00:06:31.631000: Transmission char code sets:
UTF-8(1.2)
 UTF-8(1.1) ISO-8859-1(1.2) ISO-8859-1(1.1) ISO-8859-1(1.0).
omniORB: (0) 2009-04-09 00:06:31.631000: Native wide char code sets:
UTF-16.
omniORB: (0) 2009-04-09 00:06:31.631000: Transmission wide char code
sets: UTF-1
6(1.2).
omniORB: (0) 2009-04-09 00:06:31.631000: Information: the omniDynamic
library is
 not linked.
omniORB: (0) 2009-04-09 00:06:31.631000: Current configuration is as
follows:
omniORB:   DefaultInitRef (file) =
omniORB:   DefaultInitRef (args) =
omniORB:   InitRef = NameService=corbaname::localhost
omniORB:   abortOnInternalError = 0
omniORB:   abortOnNativeException = 0
omniORB:   acceptBiDirectionalGIOP = 0
omniORB:   acceptMisalignedTcIndirections = 0
omniORB:   bootstrapAgentHostname =
omniORB:   bootstrapAgentPort = 900
omniORB:   clientCallTimeOutPeriod = 0
omniORB:   clientConnectTimeOutPeriod = 0
omniORB:   clientTransportRule = * unix,ssl,tcp
omniORB:   configFile = C:\usr\home\bin\omniorb.cfg
omniORB:   connectionWatchImmediate = 0
omniORB:   connectionWatchPeriod = 50000
omniORB:   copyValuesInLocalCalls = 1
omniORB:   diiThrowsSysExceptions = 0
omniORB:   dumpConfiguration = 1
omniORB:   endPoint = giop:tcp::
omniORB:   endPointPublish = addr
omniORB:   giopMaxMsgSize = 2097152
omniORB:   giopTargetAddressMode = KeyAddr
omniORB:   id = omniORB4
omniORB:   idleThreadTimeout = 10
omniORB:   immediateAddressSwitch = 0
omniORB:   inConScanPeriod = 180
omniORB:   lcdMode = 0
omniORB:   maxGIOPConnectionPerServer = 5
omniORB:   maxGIOPVersion = 1.2
omniORB:   maxInterleavedCallsPerConnection = 5
omniORB:   maxServerThreadPerConnection = 100
omniORB:   maxServerThreadPoolSize = 100
omniORB:   maxSocketRecv = 131072
omniORB:   maxSocketSend = 131072
omniORB:   nativeCharCodeSet = ISO-8859-1
omniORB:   nativeWCharCodeSet = UTF-16
omniORB:   objectTableSize = 0
omniORB:   offerBiDirectionalGIOP = 0
omniORB:   oneCallPerConnection = 1
omniORB:   outConScanPeriod = 120
omniORB:   poaHoldRequestTimeout = 0
omniORB:   poaUniquePersistentSystemIds = 1
omniORB:   principal = [Null]
omniORB:   resetTimeOutOnRetries = 0
omniORB:   scanGranularity = 5
omniORB:   serverCallTimeOutPeriod = 0
omniORB:   serverTransportRule = * unix,ssl,tcp
omniORB:   socketSendBuffer = 16384
omniORB:   strictIIOP = 1
omniORB:   supportBootstrapAgent = 0
omniORB:   supportCurrent = 1
omniORB:   supportPerThreadTimeOut = 0
omniORB:   tcAliasExpand = 0
omniORB:   threadPerConnectionLowerLimit = 9000
omniORB:   threadPerConnectionPolicy = 1
omniORB:   threadPerConnectionUpperLimit = 10000
omniORB:   threadPoolWatchConnection = 1
omniORB:   traceExceptions = 1
omniORB:   traceFile = [stderr]
omniORB:   traceInvocationReturns = 1
omniORB:   traceInvocations = 1
omniORB:   traceLevel = 40
omniORB:   traceThreadId = 1
omniORB:   traceTime = 1
omniORB:   unixTransportDirectory = /tmp/omni-%u
omniORB:   unixTransportPermission =  777
omniORB:   useTypeCodeIndirections = 1
omniORB:   validateUTF8 = 0
omniORB:   verifyObjectExistsAndType = 1
omniORB: (0) 2009-04-09 00:06:31.631000: Creating ref to remote:
key<NameService
>
 target id      : IDL:omg.org/CORBA/Object:1.0
 most derived id:
omniORB: (0) 2009-04-09 00:06:31.631000: Initial reference `NameService'
resolve
d from configuration file.
3640 [0x00000e24] INFO disp_otrq null - Starting thread scheduler(this
is from my stuff not from Omni)
omniORB: (0) 2009-04-09 00:06:31.631000: Preparing to shutdown ORB.
omniORB: (0) 2009-04-09 00:06:31.631000: Disable ObjRef()
key<NameService>
3640 [omniORB: (0) 2009-04-09 00:06:31.631000: omniRemoteIdentity
deleted.
omniORB: (0) 2009-04-09 00:06:31.631000: 1 object reference present at
ORB shutd
own.
omniORB: (0) 2009-04-09 00:06:31.631000: ORB shutdown is complete.
0x0omniORB: (0) 2009-04-09 00:06:31.631000: ObjRef() -- deleted.
omniORB: (0) 2009-04-09 00:06:31.631000: Terminate strand scavenger.
omniORB: (0) 2009-04-09 00:06:31.631000: Close remaining strands.
000omniORB: (0) 2009-04-09 00:06:31.631000: 0 remaining bidir ropes
deleted.
omniORB: (0) 2009-04-09 00:06:31.631000: 0 remaining ropes deleted.
omniORB: (0) 2009-04-09 00:06:31.631000: Clear endPoint options.
0d2omniORB: (0) 2009-04-09 00:06:31.631000: AsyncInvoker: deleted.


------------------------------------------ end of trace




Vlad





On Wed, 08 Apr 2009 11:15 +0100, "Duncan Grisby" <duncan at grisby.org>
wrote:
> On Tuesday 7 April, "V S P" wrote:
> 
> > in the generate stub
> > there is a static pointer called
> > 
> > static _objref_<MYINTERFACENAME>* _the_nil_ptr = 0;
> > 
> > there is a new done on it,
> > but I cannot find delete
> 
> The delete is done during the final clean-up that happens when the
> omniORB library is unloaded. It only happens if you call
> orb->destroy().
> 
> > I am getting a mem leak report on that.
> 
> What is reporting the leak?  If something goes looking for leaks before
> the omniORB library is unloaded, it will look as though it's leaked.
> 
> Cheers,
> 
> Duncan.
> 
> -- 
>  -- Duncan Grisby         --
>   -- duncan at grisby.org     --
>    -- http://www.grisby.org --
-- 
  V S P
  toreason at fastmail.fm

-- 
http://www.fastmail.fm - Faster than the air-speed velocity of an
                          unladen european swallow




More information about the omniORB-list mailing list