[omniORB] Possible bug: omniORBpyPR2 / omniORB3.0: objref unmarshalling

Will Mitchell wm@netlever.com
Tue, 14 Mar 2000 00:27:53 -0500 (EST)


Greetings,

I am using omniORBpy with the omni3_develop branch of the code from the CVS
repository.  This looks like its going to work really well--my thanks to the
contributors for their efforts.

Both omniORB and omniORBpy built without trouble on my RH 6.2  Linux box.  I
have Python 1.5.2.  

I discovered what may be a problem in the way that object references are
unmarshalled and communicated to Python.  The problem is demonstrated with a
simple script:


  #!/usr/bin/python
  
  from omniORB import CORBA
  from CosNaming import NameComponent
  
  orb=CORBA.ORB_init()
  ns=orb.resolve_initial_references("NameService")

  print 'Binding an entry in the NameService...'
  ncl=[NameComponent('test','')]
  ns.rebind(ncl,ns)

  print 'Try to find the same entry...'
  o=ns.resolve(ncl)                        # crashes here

  print 'It worked!' 


The output it produces is:


  Binding an entry in the NameService...
  Try to find the same entry...
  omniORB: Assertion failed.  This indicates a bug in omniORB.
   file: omni30/pyObjectRef.cc
   line: 449
   info: repoId
  Aborted


My interpretation of this is:  The omniPy::UnMarshalObjRef method
requires the repoId parameter to be non-NULL.  But the caller (I think its
pyMarshal.cc, line 1798) attempts to use a NULL value as a control signal--as a
way to tell omniPy::UnMarshalObjRef that we are expecting to unmarshal a
CORBA::tk_objref.  So it looks like a disagreement between the two layers on the
meaning of a null repoId parameter.


Cheers,

-------------------------------------------------------
Will Mitchell     Software Developer     NetLever, Inc.
wm@netlever.com   703-862-7224          Reston, VA, USA
-------------------------------------------------------