[omniORB] Issue transfering double over the network on x86_64/arvm8

Thomas Braun thomas.braun at byte-physics.de
Thu Feb 2 19:25:19 UTC 2023


Hi,

in cppTango we have a report of something going wrong on the armv8
(Apple M1) platform [1]. It looks like some endianess issue although
the platform is actually little-endian.

I suceeded in replicating the issue with an x86_64 server and an armv8
client using src/examples/anyExample. I've compiled omniORB 4.2.5 on
MacOSX Ventura and debian bullseye.

See the garbage output for double on the server.

Notes:
- The problem does not happen with both client and server on x86_64 or
armv8
- The issue can be replicated with x86_64 client and armv8 server as
well

I'm attaching the config.log/config.status from the mac.

I'm happy to supply more information or test a patch,
Thomas

Client:

################################################################
uname -a 
Darwin Thomass-Mac-Studio.local 22.3.0 Darwin Kernel Version 22.3.0:
Thu Jan  5 20:48:54 PST 2023; root:xnu-8792.81.2~2/RELEASE_ARM64_T6000
arm64
./anyExample_clt
IOR:010000001300000049444c3a616e794578616d706c653a312e30000001000000000
0000068000000010102000f0000003139322e3136382e3130302e34330000f3af00000e
000000fedd08dc6300006c4500000000000000020000000000000008000000010000000
0545441010000001c000000010000000100010001000000010001050901010001000000
09010100
Sending Any containing Long: 100
Invoking operation.
Operation completed. Returned Any: ULong: 314

Sending Any containing Double: 1.2345
Invoking operation.
Operation completed. Returned Any: ULong: 314

Sending Any containing String: Hello
Invoking operation.
Operation completed. Returned Any: ULong: 314

Sending Any containing testStruct: l: 456
                                   s: 8
Invoking operation.
Operation completed. Returned Any: ULong: 314
################################################################

Server:

################################################################
$uname -a
Linux thomas 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21)
x86_64 GNU/Linux

$./anyExample_impl 
IOR:010000001300000049444c3a616e794578616d706c653a312e30000001000000000
0000068000000010102000f0000003139322e3136382e3130302e34330000f3af00000e
000000fedd08dc6300006c4500000000000000020000000000000008000000010000000
0545441010000001c000000010000000100010001000000010001050901010001000000
09010100
Any received, containing: 
Long: 100
Returning Any containing: ULong: 314

Any received, containing: 
Double: 6.7705e-220
Returning Any containing: ULong: 314

Any received, containing: 
String: Hello
Returning Any containing: ULong: 314

Any received, containing: 
testStruct: l: 456
            s: 8
Returning Any containing: ULong: 314
################################################################

[1]: https://gitlab.com/tango-controls/cppTango/-/issues/1052

-------------- next part --------------
A non-text attachment was scrubbed...
Name: config.log
Type: text/x-log
Size: 73016 bytes
Desc: not available
URL: <https://www.omniorb-support.com/pipermail/omniorb-list/attachments/20230202/e8059591/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: config.status
Type: application/x-shellscript
Size: 44320 bytes
Desc: not available
URL: <https://www.omniorb-support.com/pipermail/omniorb-list/attachments/20230202/e8059591/attachment-0003.bin>


More information about the omniORB-list mailing list