Skip to content

Problems with fragmented GIOP messages #1201

@j18ter

Description

@j18ter

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions