Looks like some lookup table in the ird gets corrupted, since it appears that
the "ird" thinks that the given "OperationDef" is_a
Container since this code returns "True" where obj is a "OperationDef" and
repoid is "IDL:omg.org/CORBA/Container:1.0:
object.cc: (called from ir.cc below)
CORBA::Bo
Even though OperationDef is not a Container, a Container_stub is used. I wonder
if the "!strcmp" logic is incorrect when there is an
OperationDef?
ir.cc
...
CORBA::Container::_narrow( CORBA::Object_ptr _obj )
{
CORBA::Container_ptr _o;
if( !CORBA::is_nil( _obj ) ) {
void *_p;
if( (_p
Here's more info on the problem:
When I defined the method in the IDL as:
JobIds getFailedJobIds();
with JobIds defined in an included file as:
typedef JobIds sequence;
The definition for this method when evaluated here appears to be a "Container"
with a repository ID of
"IDL:omg.org/CORBA/
Karel,
I haven't found the root cause of the problem yet. I'm running both the "idl
--feed-ir" command and the "ird" in multi-threaded
mode. I've noticed that I can make a slight change to a method signature such
as:
typedef sequence Items; (defined in an include file)
...
interface Test {
..
Hi Rob,
indeed, this would point to some race-condition in ird itself. However
even part or not majority of interface repository (at least this
contained in libmicoir) should be thread-safe as this is also used in
ObjectWall[1] and its generally thread-safe and tested a lot under hight
load i
FYI:
Here's the debug output from idl just prior to core dumping:
IIOPProxy::add_invoke: rec=0xd0e8328, id=0xf056878, msgid=38143)
MICO::GIOPConn::output (CORBA::Buffer *b)
b: 0xcdf8b50
Out Data 47 49 4f 50 01 00 01 00 44 00 00 00 00 00 00 00 GIOPD...
ff 94 00 00 01 00 00 00 17 00 00 00 2
Here's another update: I recompiled mico with threads disabled and noticed that
the single-threaded idl program crashed when
communicating with the multi-threaded ird, but not with the single-threaded
ird. So it appears that the crash is related to enabling
threads in the ird.
On 10/18/2011 10:0
Hi,
I compiled MICO with multi-thread enabled (and CSIV2). When I attempt to load
the CORBA.idl into the interface repository using
idl --feed-ir CORBA.idl
I get the following stack trace from the core dump:
(gdb) where
#0 0x0013a416 in __kernel_vsyscall ()
#1 0x003052f1 in raise () from /lib