-
Notifications
You must be signed in to change notification settings - Fork 380
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problems with fragmented GIOP messages #1201
Comments
Thanks for reporting this issue and making a reproducer. Could you attach a client and server logfile with ORB logging 10? This is very likely a complex issue and it if very unlikely someone has spare time to work on this for free. When you need someone to look at this in detail consider hiring one of the commercial support companies, like Remedy IT for which I work. See https://www.dre.vanderbilt.edu/~schmidt/commercial-support.html for an overview of the companies who provide support |
Could you make a PR for the new test to place it under https://github.com/DOCGroup/ACE_TAO/tree/master/TAO/tests/GIOP_Fragments? Don't add generated files and generated makefiles |
Client and server log files are attached. I compressed these because the server log file includes hex dumps of the complete server_log.txt.gz
|
Done (Pull request #1205). This may need some massaging by somebody who is more familiar with the TAO tree and build system than I am. |
TAO does not seem to break strings across fragments, and in fact, it does not even break up an element of a sequence. |
As far as I remember sending GIOP fragmentation support was added as part of the sendfile support and at that moment only a higher level fragmentation support was implemented. |
Further investigation suggests, that strings specifically care causing issues. Composite data types generated by |
Please extend the unit test you have with various IDL constructs that you are using for testing. |
Not sure I will have time for this. It turns out that this fragmentation issue was not what caused our |
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
orCORBA::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.
The text was updated successfully, but these errors were encountered: