[omniORB] bug report
Stefan Seefeld
seefelds@MAGELLAN.UMontreal.CA
Thu, 16 Nov 2000 10:21:42 -0500
Duncan Grisby wrote:
>
> On Wednesday 15 November, Stefan Seefeld wrote:
>
> > class CreateTool(Unidraw__POA.Tool):
> > def __init__(self): pass
> > def create_manipulator(self, traversal, event): return CreateManipulator()
> >
> > This contains an obvious error, i.e. the 'CreateManipulator' is
> > returned, not a reference to it.
> >
> > Now the bug: the editor servant lives in the server, the 'current
> > tool' in the client. When I try to instantiate the manipulator
> >
> > Tool_var tool = editor->current_tool();
> > Manipulator_var manipulator = tool->create_manipulator();
> >
> > I get a system exception in the server ! Clearly, the problem is in
> > the client code, so the exception should be thrown and caught in the
> > client.
>
> I don't understand. It looks to me like the problem is in the server
> code, so it should be caught in the server.
The problem is that the python client servant ('CreateTool') returns a
'bad parameter', i.e. a servant ('CreateManipulator'), instead of a reference
to a servant.
I would expect the server side ORB to catch that and to return immediately an
exception to the client, without the server implementation needing to care.
However, as I see now, the server throws indeed a BAD_PARAM exception, though
it seems to be caught by the server itself, leading to the server to exit.
The 'system exception' I was observing seems an entirely different problem,
related to a faulty cleanup handling in the server.
> What should happen is that the
> server detects the error and throws a BAD_PARAM exception, which
> appears on the client.
yeah, that's what I would expect. However, it 'appears' in the server itself...
Regards, Stefan
_______________________________________________________
Stefan Seefeld
Departement de Physique
Universite de Montreal
email: seefelds@magellan.umontreal.ca
_______________________________________________________
...ich hab' noch einen Koffer in Berlin...