[Orbit-python-list] ORBit - MICO
Status: Inactive
Brought to you by:
tack
From: Panagiotis I. <tak...@sk...> - 2002-11-22 15:18:31
|
Hi, I'm trying to set up a CORBA Component system. I've searched for Open Source ORB's implementing at least a part of these standards and stumbled upon MICO or actually MicoCCM. Luckily the clientside of a CORBA system using components doesn't have to know about CORBA components at all, so you can use any CORBA 2.3 (or 2.4?) compliant ORB to use the components services. Because I like Python a lot, I wanted to use Python CORBA bindings and because I've played around with Orbit-Python before, I decided to try this one first. Half a year ago, I had lots of trouble getting _any_ ORB to communicate with ORBit (omniORB, TAO, MICO). At this time, I still didn't manage to get ORBit 0.x communicating with other ORBs but I'm getting some good results with ORBit 2.5.0. I'm using Debian GNU/Linux with orbit-python 1.99.0-4 on Python 2.2 with ORBit version 2.5.0. I'm using MICO 2.3.7. The MICO C++ server works, and also works with a MICO C++ client. The ORBit Python client works partly. When using a MICO server with an ORBit Python client, the operations get invoked on the CORBA object (server), but the client application aborts showing the following message: ** ERROR **: file orbit-object.c: line 146 (do_unref): assertion failed: (robj->refs < ORBIT_REFCOUNT_MAX && robj->refs > 0) On the MICO serverside: pissaris@nyx:~/robot/cxx/a/b$ g++ main.o orocos.o orocos_impl.o -o blaai -lmico2.3.7 -ldl orocos_skel.o pissaris@nyx:~/robot/cxx/a/b$ ./blaai found orb found boa a Server reference: IOR:010000001700000049444c3a4f726f636f732f4b756b613336313a312e300000020000000000000028000000010100000c0000003139322e3136382e302e3100ee8600000c000000424f41c0a8000100006789010100000024000000010000000100000001000000140000000100000001000100000000000901010000000000 echo STARTING KUKA STOPPING KUKA STARTING KUKA STOPPING KUKA As you can see, multiple invocations passed through (every invocation causes one outputline of "STARTING KUKA","STOPPING KUKA"). The serverside works just fine. On the ORBit Python clientside: pissaris@nyx:~/robot/cxx/a/b$ python takis.py 1 <Orocos.Kuka361 instance at 0x816888c> Invoking operation on CORBA server Ending CORBA client ** ERROR **: file orbit-object.c: line 146 (do_unref): assertion failed: (robj->refs < ORBIT_REFCOUNT_MAX && robj->refs > 0) aborting... Afgebroken pissaris@nyx:~/robot/cxx/a/b$ python takis.py 1 <Orocos.Kuka361 instance at 0x816888c> Invoking operation on CORBA server Ending CORBA client ** ERROR **: file orbit-object.c: line 146 (do_unref): assertion failed: (robj->refs < ORBIT_REFCOUNT_MAX && robj->refs > 0) aborting... Afgebroken Not directly related to the above: When I use ORBit Python by itself (no MICO or anything else involved), using void as return type causes an immediate segfault when using the Python client: pissaris@nyx:~/robot/cxx/a$ ./server found orb found boa a Server reference: IOR:010000001700000049444c3a4f726f636f732f4b756b613336313a312e300000020000000000000028000000010100000c0000003139322e3136382e302e3100248600000c000000424f41c0a800010000218b010100000024000000010000000100000001000000140000000100000001000100000000000901010000000000 STARTING KUKA STARTING KUKA STARTING KUKA STARTING KUKA STARTING KUKA pissaris@nyx:~/robot/cxx/a$ python takis.py 1 <Orocos.Kuka361 instance at 0x8166864> Invoking operation on CORBA server Segmentatie fout When using the old Python bindings of ORBit with the 0.x release of ORBit, there's no communciation happening at all. I'm going to try to write the client in C, using ORBit 2.5.0 and earlier stable releases, to try to isolate the problem. But, if it is a known problem, or if anyone has a solution, please tell me :-) With friendly regards, Takis |