Discussion:
[omniORB] ANNOUNCE: omniORB 4.1.1 and omniORBpy 3.1
Duncan Grisby
2007-10-09 23:58:33 UTC
Permalink
I am pleased to announce that omniORB 4.1.1 and omniORBpy 3.1 are now
available. You can download them in source and Windows binary forms from
SourceForge:

http://sourceforge.net/project/showfiles.php?group_id=51138&package_id=44914&release_id=544978
http://sourceforge.net/project/showfiles.php?group_id=51138&package_id=48639&release_id=544980

These are mainly bug fix releases, with a number of minor new features.
See the release notes and bug lists for more details:

For omniORB 4.1.1:

http://sourceforge.net/project/shownotes.php?release_id=544978&group_id=51138
http://omniorb.sourceforge.net/bugs/bugfixes-410.html

For omniORBpy 3.1:

http://sourceforge.net/project/shownotes.php?release_id=544980&group_id=51138
http://omniorb.sourceforge.net/pybugs/bugfixes-30.html


Duncan.

--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Jian Wu
2007-10-12 15:14:28 UTC
Permalink
Hello all,

In our project has been using omniorb 4.1.0 and it passes all our own
test suite.

When we try to migrate to new version 4.1.1, there is a assertion
failure for structures in Any for the same test suite. For all the other
types in Any the tests pass.

The interface function definition in idl is

long f_vi(
in any p1,
inout any p2,
out any p3
);

The struc definition in idl is

struct fix_bas_0d_str {
boolean bo;
char ch;
octet uc;
short sh;
unsigned short us;
long my_in;
unsigned long ui;
long lo;
unsigned long ul;
float fl;
double db;
my__n_enu_t en_n;
o_enu_t en_o;
t_enu_t en_t;
instanceid id;
timestamp ts;
};

The error appears while the python client calling function f_vi() with
this struct inside Any. The c++ server will give this output many times.

omniORB: Assertion failed. This indicates a bug in the application
using omniORB, or maybe in omniORB itself.
file: ../../../../../src/lib/omniORB/dynamic/tcParser.cc
line: 297
info: 0

However, if we make the following change of line 729-731 in tcParser.cc,
all our test cases pass without any error:

void tcParser::copyStreamToStream(const CORBA::TypeCode_ptr tc,
cdrStream& src,
cdrStream& dest) {
// if (src.unmarshal_byte_swap() == dest.marshal_byte_swap())
// fastCopyUsingTC(ToTcBase_Checked(tc), src, dest);
// else
copyUsingTC(ToTcBase_Checked(tc), src, dest);
}

Looking closer into function fastCopyUsingTC() in tcParser.cc, it has no
switch on tc_struct and goes to default line 297. Is that the source of
the error?

We also notice that tcParser.cc is exactly the same in version 4.1.0 and
4.1.1. Is it possible that the other changes in 4.1.1 make this problem
appears in the new version.


In the attachment you will see all the idl types used in Any in our test
suite. The only failure cases are:

fix_bas_0d_str
fix_def_0d_str
var_nes_0d_str
var_nes_1d_str
var_nes_2d_str
var_nes_3d_str

For var_nes_1d_uni and var_nes_2d_uni they give another error output,
which is:

omniORB: Assertion failed. This indicates a bug in the application
using omniORB, or maybe in omniORB itself.
file: ../../../../../src/lib/omniORB/dynamic/tcParser.cc
line: 297
info: 0
omniORB: From endpoint: giop:tcp:172.19.26.169:43741. Detected GIOP 1.2
protocol error in input message. giopImpl12.cc:1035. Connection is
closed


All of these failed types have one thing in common. They all has
fix_bas_0d_str or fix_def_0d_str defined inside. Moreover, these two
structs only have fixed length field defined.

Do you know what is the cause of this problem?

Best regards,

Jian Wu



--
The information contained in this communication and any attachments is confidential and may be privileged, and is for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure or distribution is prohibited. Unless explicitly stated otherwise in the body of this communication or the attachment thereto (if any), the information is provided on an AS-IS basis without any express or implied warranties or liabilities. To the extent you are relying on this information, you are doing so at your own risk. If you are not the intended recipient, please notify the sender immediately by replying to this message and destroy all copies of this message and any attachments. ASML is neither liable for the proper and complete transmission of the information contained in this communication, nor for any delay in its receipt.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tst_t.idl
Type: application/octet-stream
Size: 31614 bytes
Desc: tst_t.idl
Url : http://www.omniorb-support.com/pipermail/omniorb-list/attachments/20071012/c61383e2/tst_t-0001.obj
Duncan Grisby
2007-10-14 21:28:12 UTC
Permalink
On Friday 12 October, "Jian Wu" wrote:

[...]
> The error appears while the python client calling function f_vi() with
> this struct inside Any. The c++ server will give this output many times.
>
> omniORB: Assertion failed. This indicates a bug in the application
> using omniORB, or maybe in omniORB itself.
> file: ../../../../../src/lib/omniORB/dynamic/tcParser.cc
> line: 297
> info: 0
>
> However, if we make the following change of line 729-731 in tcParser.cc,
> all our test cases pass without any error:
>
> void tcParser::copyStreamToStream(const CORBA::TypeCode_ptr tc,
> cdrStream& src,
> cdrStream& dest) {
> // if (src.unmarshal_byte_swap() == dest.marshal_byte_swap())
> // fastCopyUsingTC(ToTcBase_Checked(tc), src, dest);
> // else
> copyUsingTC(ToTcBase_Checked(tc), src, dest);
> }
>
> Looking closer into function fastCopyUsingTC() in tcParser.cc, it has no
> switch on tc_struct and goes to default line 297. Is that the source of
> the error?

No, that's not the problem. The fast copy case uses an "alignment table"
that is generated from the TypeCode. Struct TypeCodes should never
appear in an alignment table, so it's right that the switch doesn't
handle the case of tk_struct. If there is a tk_struct TypeCode in there,
it's a bug in the code that generates the alignment table.

Something helpful would be if you add a log message just before the
assertion failure to show what TypeCode kind the switch has encountered.

> We also notice that tcParser.cc is exactly the same in version 4.1.0 and
> 4.1.1. Is it possible that the other changes in 4.1.1 make this problem
> appears in the new version.

The code that generates the struct alignment table, in typecode.cc, has
been changed, to fix a bug related to recursive structs. That is
presumably the cause of the error, but I can't see a problem just be
reading the code.

> In the attachment you will see all the idl types used in Any in our test
> suite. The only failure cases are:

Are you able to come up with a minimal test case that fails? It's very
difficult to see what's going on in that big generated IDL file. Also,
it #includes and uses types from a couple of other files that you didn't
provide. It would be really handy if you could provide code that fails,
as well as just the IDL. That will make it much easier for me to
reproduce it.

Cheers,

Duncan.

--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Shawn LaMaster
2007-10-24 01:35:15 UTC
Permalink
Does OmniOrb 2.6 support listening to mutiple tcp ports
simultaneously? If not, is there any version that does? Or any orb
that anyone might know of that does?

Thanks in advance,
Shawn

Shawn LaMaster
PRIME Analytics, LLC
www.prime-analytics.com
www.eprotrader.com
520.320.7557
520.400.3775 [cell]
Duncan Grisby
2007-10-25 15:59:58 UTC
Permalink
On Tuesday 23 October, "Shawn LaMaster" wrote:

> Does OmniOrb 2.6 support listening to mutiple tcp ports
> simultaneously? If not, is there any version that does? Or any orb
> that anyone might know of that does?

Do you mean omniORBpy 2.6 or omniORB 2.6? omniORB 2.6 is incredibly
ancient history.

omniORBpy 2.6 supports listening on multiple endpoints. Look at the
endPoint configuration parameter in the manual.

If possible, you should upgrade to the latest version of omniORB and
omniORBpy.

Cheers,

Duncan.

--
-- Duncan Grisby --
-- ***@grisby.org --
-- http://www.grisby.org --
Loading...