[omniORB] omniORB in C++ DLL called by (embarrassment) VB

agonne - Andrew Gonnet AGONNE@acxiom.co.uk
Tue, 20 Jul 1999 14:03:21 +0100


Hi,

A small problem:

Background:
Client running omniORB 2.7.1 on NT 4.0 Intel PC. It is a VB program 
which calls C functions in a C/C++ DLL which in turn call the 
initialisation and my application Corba methods.
Implementation and omniNames running on "Tru64" unix, also omniORB 
2.7.1

Problem:
When running the program from the VB IDE, when the VB program 
finishes, and the VB system attempts to return to the IDE, it hangs. 
This problem does not occur if I compile the VB program and run the 
exe, this exits cleanly.

I'm guessing this is because VB runs a single process, interpreting 
the VB code from the same thread as the IDE is run from. This means 
that when a VB program "finishes" the process itself doesn't finish, 
so for some reason perhaps the child threads in the ORB are not 
shutdown properly (although the DLL write-lock is released and I can 
write a new version from C++ IDE if I wish).

I have cut the program down to just ORB_init and this problem still 
occurs.

I would like to shut everything down by calling the "ORB::shutdown" 
and "ORB::destroy" methods (as per the Corba V2.3 spec) but 
unfortunately these are not implemented in omniORB 2.7.1.

Has anyone else also had this problem?
Does anyone have any ideas or suggestions?

Thanks,

Andrew Gonnet.