[omniORB] bug report

Stefan Seefeld seefelds@MAGELLAN.UMontreal.CA
Thu, 16 Nov 2000 10:47:11 -0500


Duncan Grisby wrote:
> 
> On Thursday 16 November, Stefan Seefeld wrote:
> 
> > 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.
> 
> In this circumstance, the Python program is acting as a server. It is
> wrong to call it a client. That's what confused me.

doh ! I'm sorry for that.

> 
> > > 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...
> 
> What _exactly_ happens?  What error message do you get?  Can you post
> a traceback?

Here is the code in the C++ client:

void Viewer::press(Warsaw::PickTraversal_ptr traversal, const Warsaw::Input::Event &event)
{
  Trace trace("Viewer::press");
  Tool_var tool = _editor->current_tool();
  try
    {
      _active = tool->create_manipulator(traversal, event);
    }
  catch (const CORBA::BAD_PARAM &)
    {
      cout << "got a bad parameter !" << endl;
    }
  //...
}

I added the 'try' block to check, and indeed, it is the client which catches the
BAD_PARAM exception:

   16.9528:0	enter Viewer::press
omniORB: LocateRequest to remote: root<16777216>
omniORB: throw BAD_PARAM from giopClient.cc:495
got a bad parameter !
   17.0617:0	leave Viewer::press

the 'Viewer::press' is the enclosing C++ method which invokes the code listed above.
I traced it as a navigation help. I hope this is enough information now, I used
traceLevel 10...

Regards,	Stefan

_______________________________________________________
              
Stefan Seefeld
Departement de Physique
Universite de Montreal
email: seefelds@magellan.umontreal.ca

_______________________________________________________

      ...ich hab' noch einen Koffer in Berlin...