[omniORB] omniORB3 BUG on NT compile

David Riddoch djr@uk.research.att.com
Fri, 22 Oct 1999 15:18:03 +0100 (BST)


Hi,


Thanks for that.  I've put the fix into CVS (yesterday, so you should be
able to get it right now).


David



On Fri, 22 Oct 1999, Ji-Yong D. Chung wrote:

> Omniorb Developers:
> 
>     I just managed to compile and DLL debug version of omniORB300_rtd.dll,
> with MSVC++ on NT4.0 (SP4).
> 
>     I linked it with omniNames object files and created omniNames.exe.  As
> soon as it begins to run for the FIRST time, it dies, due to "Unhandled
> exception in omniNames.exe ... Access Violation".   With David Riddoch's
> latest version, it is rather easy to build and reproduce the error.
> 
>     The error occurs inside log.cc, in
> 
>     omniNameslog::init(CORBA::ORB_ptr the_orb, PortableServer::POA_ptr the
> poa)
>     {
> 
>         // stuff
> 
>         putPort(port, logf);
>         {
>             CORBA::Object_var ref = poa_create_reference
>                 (   CosNaming::NamingContext::_PD_repoID);          <==
> ERROR happens here!!
>             PortableServer::ObjectID_var refid = poa -> reference_to_id(ref_
>         };
> 
>         // stuff
>     }
> 
> 
>     The variable CosNaming::NamingContext::_PD_repoID is exported from
> omniORB3 (one can see this in omniORB3.def file that is generated).
> 
>     That particular variable is used in omniNames (which is outside the
> omniORB3 dll).  This violates Microsoft requirement that, for exported
> variable to be used OUTSIDE the defining dll, the variable MUST be imported
> by the user module (with _declspec(dllimport) qualifier).  omniNames files
> do not import the variable (I checked it).  (By the way, this requirement is
> relaxed for functions imports).
> 
>     Without the import statement, the variable looks like unallocated memory
> to omniNames -- this is causing access error.
> 
> -------------------------------
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>