[omniORB] Issues related with Shared libs shared the static variables.

S. Sahayaraj ssahayaraj@quark.co.in
Tue Feb 4 05:05:03 2003


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C2CC09.92864440
Content-Type: text/plain;
	charset="iso-8859-1"

Hi Duncan,

	We have one main application and it have more plug-ins.  Both are
using the shared libs of omniORB.  All ORB related operation goes well in
both main and plug-ins modules.  but it is getting crashed once we tried to
close the application. It's applicable for both Windows and Mac OS 9.  

	Then, I watched this problem more deeply in omniORB level and could
see the actual problem lies in omniORB source while ORB destroying time(Most
probably, I could say FinalCleanup time). For that, I modified the code
little bit in ORB_init(..) and destroy(..) function of corbaOrb.cc file .
In this case, all my changes are related with orb_count as two application
are sharing one static ORB.

	It is working fine and no crahses right now because of my changes.
I'm sending you those changes in attached file.

	I would like to have your feedback and review these changes and let
me know.

	if you feel these changes are OK, then I would like to add those
changes in omniORB source itself.


Thanks
Sahay.
 <<corbaOrb.zip>> 




PS:
	These are the  following steps to recreate this crashing problem.

	1.  My main application is trying to initalize the ORB by calling
the ORB_init(..) funtion.  When we invoke the call, then omniORB can create
the omniOrbORB instance and it increasing the referece count and orb_count.


	2. In next step, my main application is trying to load the plug-ins,
that time my plug-ins is trying to call ORB_init(..).  I've seen that there
is no new instance of omniOrbORB getting created and no increment the value
of orb_count except to increment the reference count value.

	3. All ORB related operation in main application and in plug-ins are
going good and well.

	4. While exiting the application, Orb->destroy(..) calls getting
succeed for both application and plug-in., but application is getting
crahsed during the clean-up of ORB in the following piece of code.

_omniFinalCleanup::~_omniFinalCleanup()
{
  if (--count() != 0)
    return;

  if (!omniOrbORB::all_destroyed()) {
    omniORB::logs(15, "ORB not destroyed; no final clean-up.");
    return;
  }
  omniORB::logs(15, "Final clean-up");
  int nils = 0;
  omnivector<CORBA::Object_ptr>::iterator i = nilObjectList()->begin();
  for (; i != nilObjectList()->end(); i++, nils++)
    delete *i;

  delete nilObjectList();

  int tracked = 0;
  omnivector<omniTrackedObject*>::iterator j = trackedList()->begin();
  for (; j != trackedList()->end(); j++, tracked++)
    delete *j;  // It crahses the application due to invalid ptr.
....
...



------_=_NextPart_000_01C2CC09.92864440
Content-Type: application/octet-stream;
	name="corbaOrb.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="corbaOrb.zip"

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
T3JiLmNjUEsFBgAAAAABAAEAOQAAAFYuAAAAAA==

------_=_NextPart_000_01C2CC09.92864440--