-
Notifications
You must be signed in to change notification settings - Fork 387
Description
Version
6.5.11/2.5.11
Host machine and operating system
CentOS 7 Linux 3.10.0-1127.13.1.el7.x86_64 on a generic PC with Intel i7 CPU.
Target machine and operating system (if different from host)
Same
Compiler name and version (including patch level)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
The $ACE_ROOT/ace/config.h file
#define ACE_HAS_IPV6
#include <ace/config-linux.h>
The $ACE_ROOT/include/makeinclude/platform_macros.GNU file
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
Contents of $ACE_ROOT/bin/MakeProjectCreator/config/default.features
This file does not seem to exist.
AREA/CLASS/EXAMPLE AFFECTED:
A simple variation of the echo example, which returns a string sequence that is slightly bigger
than 4MB. The server is started with command line parameters -ORBMaxMessageSize 1048576
to cause GIOP fragmentation.
The problem effects:
It affects execution. In this example the client receives incorrect values, in our more complex
application the client encounters CORBA::MARSHAL or CORBA::COMM_FAILURE exceptions.
Synopsis
Returning big sequences from operations can cause client exceptions or incorrect values.
Description
Initially seen with a total returned size of approximately 8 MB, and client got CORBA::MARSHAL, The ``-ORBMaxMessageSize"
parameter was not used in this case. Using it to force fragmentation causes simple examples to fail.
Repeat by
A complete example program with MPC and make files can be cloned from Github with this command:
git clone https://github.com/NetAcquire/tao_fragmentation_bug.git
Note: Run the included run_tests.pl script to see the failure. This passes -ORBMaxMessageSize 1048576
to the server. Without this parameter the test succeeds.
Sample fix/ workaround
Tried to debug, but got lost in the GIOP parsing code.