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

Re: [xmlblaster-devel] MS c++ crash on shutdown fix



Martin Johnson wrote:

Marcel

I have update cvs with changes to get c++ lib running again.

As part of this fix requires the removal of objman from
org::xmlBlaster::util namespace
the test suite will not compile.

The only effect is the init() fini() methods. maybe the class needs to be
renamed for the purpose
of reflecting xmlBlaster initiailization rather than object lifetime
management.
Though perhaps not, I have seen .net 2003 arrive today at work, perhaps the
7.1 compiler allows
it to compile within the namespace as does gcc.

Ok, otherwise just do a global search&replace to remove the namespace in demo/c++ and testsuite/src/c++
directories.


thanks,

Marcel


Regards

Martin



Hi Marcel, Michele,

I was able to reproduce the problem.

The troble with the crash on windows is the relationship existing between
Global (now managed) and CorbaDriverFactory (not managed)

I change CorbaDriverFactory to a 'managed object' destructed prior to
Global all is well.


The fact that this does not occur on Linux adds the the notion that static globals are not having the destructors called otherwise you would be seeing similar behaviour. Recall this being one of reasons in pursuing the object manager along with Global destruction hanging on MS. To implement I had to alter the way global is created. It is now pre-allocated to ensure it being the first object created as relationships dictate this.

These changes fix the crash.


Whilst looking into this I have found some more trouble.
MS compiler does not support template friends defined outside of


the current


namespace. To workaround this I had to remove Object_Lifetime_Manager from
org::xmlBlaster::util namespace it is now global.

Another observation is removing from the namspace removed 4k from the size
of the lib.
The *extensive* use of namespaces appears to contribute somewhat


to the size


of the lib.

Regards

Martin