[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
-------------------------------------------------------