[omniORB] omniOrb4 - codeset intialisation exception?

Stephen Crawley crawley@dstc.edu.au
Wed, 25 Jul 2001 10:41:10 +1000


Duncan & Mac,

I wrote:
> I hacked a "solution" which involved explicitly instantiating
> the codeset classes in my mainline code before calling ORB_init.

This doesn't work because it causes each codeset to be registered twice.
When a codeset is registered twice, the codeset lists end up with a
cycle which causes omniCodeSet::logCodeSets() to loop forever if I
set -ORBtraceLevel >= 15.

> But I'm running into other problems which might be a consequence
> of my hackery.

I think they are unrelated.  Does the following stack trace look
familiar to anyone?  It looks like the giopRope object has not been
correctly initialised. Is this a known problem?

Program terminated with signal 9, Killed.
...
#0  0x2fa12c in omni::giopRope::acquireClient (this=0x5207b0, ior=0x519930, 
    key=0x51fbf0 "", keysize=50, calldesc=0xffbef0e8) at giopRope.cc:216
216         giopStrand* s = new giopStrand(pd_addresses[pd_addresses_order[pd_address_in_use]]);
(gdb) where
#0  0x2fa12c in omni::giopRope::acquireClient (this=0x5207b0, ior=0x519930, 
    key=0x51fbf0 "", keysize=50, calldesc=0xffbef0e8) at giopRope.cc:216
#1  0x2f4ff4 in omni::IOP_C_Holder::IOP_C_Holder (this=0xffbeefc8, 
    ior=0x519930, key=0x51fbf0 "", keysize=50, rope=0x5207b0, 
    calldesc=0xffbef0e8) at omniTransport.cc:59
#2  0x2ec290 in omniRemoteIdentity::dispatch (this=0x51fbc0, 
    call_desc=@0xffbef0e8) at remoteIdentity.cc:142
#3  0x2d1d18 in omniObjRef::_invoke (this=0x51fc40, call_desc=@0xffbef0e8, 
    do_assert=true) at omniObjRef.cc:553
#4  0x264bb0 in Repository::_objref_BaseRepository::contents (this=0x51fc6c)
    at RepositorySK.cxx:497
#5  0x1937c8 in locate_schema (
    ior_file=0xffbef4a0 "/home/crawley/iors/dmof_steve.ior", 
    path=0x430818 "DEFAULT", new_schema=0, replace_schema=0) at main.cxx:346
#6  0x194954 in main (argc=5, argv=0xffbef2dc) at main.cxx:546
(gdb) print pd_addresses
$1 = {start = 0x0, finish = 0x0, end_of_storage = 0x0}
(gdb) print pd_addresses_order
$2 = {start = 0x0, finish = 0x0, end_of_storage = 0x0}
(gdb) print pd_address_in_use
$3 = 0
(gdb) 

I'm uploading the latest sources from the CVS repository to see if this
fixes my problems ...

-- Steve