Discussion:
[omniORB] omniORB 4.1.1 enum sequence problems
Chris
2008-01-26 18:25:32 UTC
Permalink
Hi all,

I am having trouble with the switch to omniORB 4.1.1. Some calls to
create_dyn_any which caused no trouble in previous versions suddenly
cause assertion failures in omniORB. The problem seems to be connected
to calling create_dyn_any with sequences containing enums.

I have narrowed it down to cases like in the following code:

CORBA::Object_var obj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
CORBA::Object_var da_obj =
orb->resolve_initial_references("DynAnyFactory");
DynamicAny::DynAnyFactory_var daFactory=
DynamicAny::DynAnyFactory::_narrow(da_obj);

test::Struct1_seq s_seq;
s_seq.length(1);
s_seq[0].e1=test::type1;

CORBA::Any tmp_any;
tmp_any <<= s_seq;
DynamicAny::DynAny_var dv_test =
daFactory->create_dyn_any(tmp_any);


The last line with the create_dyn_any call generates the following message:

omniORB: Assertion failed. This indicates a bug in the application
using omniORB, or maybe in omniORB itself.

file: tcParser.cc
line: 297
info: 0


The idl for the example is:

interface test {
enum enum1 {
type1,
type2
};

struct Struct1 {
enum1 e1;
};

typedef sequence <Struct1> Struct1_seq;
};


Hints to what is going on would be greatly appreciated.

/ Chris
Tim Theisen
2008-01-27 21:13:53 UTC
Permalink
Chris,

The sounds very similar to a problem reported earlier. Perhaps, the
patch supplied in this posting will help:
http://www.omniorb-support.com/pipermail/omniorb-list/2007-October/02895
2.html

...Tim
--
Tim Theisen Lead Research Software Engineer
Phone: +1 608 824 2848 TomoTherapy Incorporated
Fax: +1 608 824 2996 1240 Deming Way
Web: http://www.tomotherapy.com Madison, WI 53717-1954
-----Original Message-----
From: omniorb-list-***@omniorb-support.com
[mailto:omniorb-list-***@omniorb-support.com] On Behalf Of Chris
Sent: Saturday, January 26, 2008 06:26
To: omniorb-***@omniorb-support.com
Subject: [omniORB] omniORB 4.1.1 enum sequence problems

Hi all,

I am having trouble with the switch to omniORB 4.1.1. Some calls to
create_dyn_any which caused no trouble in previous versions suddenly
cause assertion failures in omniORB. The problem seems to be connected
to calling create_dyn_any with sequences containing enums.

I have narrowed it down to cases like in the following code:

CORBA::Object_var obj =
orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa =
PortableServer::POA::_narrow(obj);
CORBA::Object_var da_obj =
orb->resolve_initial_references("DynAnyFactory");
DynamicAny::DynAnyFactory_var daFactory=
DynamicAny::DynAnyFactory::_narrow(da_obj);

test::Struct1_seq s_seq;
s_seq.length(1);
s_seq[0].e1=test::type1;

CORBA::Any tmp_any;
tmp_any <<= s_seq;
DynamicAny::DynAny_var dv_test =
daFactory->create_dyn_any(tmp_any);


The last line with the create_dyn_any call generates the following
message:

omniORB: Assertion failed. This indicates a bug in the application
using omniORB, or maybe in omniORB itself.

file: tcParser.cc
line: 297
info: 0


The idl for the example is:

interface test {
enum enum1 {
type1,
type2
};

struct Struct1 {
enum1 e1;
};

typedef sequence <Struct1> Struct1_seq;
};


Hints to what is going on would be greatly appreciated.

/ Chris

Loading...