4.6. Regressions in 6.0.1

The following regressions occur in Connext 6.0.1.

4.6.1. Core Libraries

4.6.1.1. Durable Writer History properties prefix must contain “.builtin” substring

In 6.0.0, you could configure the Durable Writer History properties in two different ways:

  • Without using the .builtin substring: for example, dds.data_writer.history.odbc_plugin.driver

  • Using the .builtin substring: for example, dds.data_writer.history.odbc_plugin.builtin.driver

By default, not using .builtin generates a WARNING in 6.0.1 and an ERROR in 6.1.0 and later releases. For example, if you try to use the Durable Writer History properties without .builtin in 6.1.0, you will get an error similar to the error below, and DataWriter creation will fail. In 6.0.1 you will get warnings, but DataWriter creation will be successful.

ERROR [0x0101B794,0x7E4E17F1,0x31DC168E:0x80000008{Entity=Pu,Domain=56}|CREATE DW WITH TOPIC Raw1kTopic] DDS_PropertyQosPolicy_validateEntityPropertyNames:Unexpected property: dds.data_writer.history.odbc_plugin.driver. Closest valid property: dds.data_writer.history.odbc_plugin.builtin.driver. If you wish to proceed with this property name anyway, change 'dds.participant.property_validation_action' to 'VALIDATION_ACTION_SKIP' or 'VALIDATION_ACTION_WARNING'.
ERROR [0x0101B794,0x7E4E17F1,0x31DC168E:0x80000008{Entity=Pu,Domain=56}|CREATE DW WITH TOPIC Raw1kTopic] DDS_DataWriterQos_is_consistentI:inconsistent QoS property
ERROR [0x0101B794,0x7E4E17F1,0x31DC168E:0x80000008{Entity=Pu,Domain=56}|CREATE DW WITH TOPIC Raw1kTopic] DDS_Publisher_create_datawriter_disabledI:ERROR: Inconsistent QoS
ERROR [0x0101B794,0x7E4E17F1,0x31DC168E:0x80000008{Entity=Pu,Domain=56}|CREATE DW WITH TOPIC Raw1kTopic] DDS_Publisher_create_datawriter:CREATION FAILURE | DataWriter

Although it is strongly recommended to use the .builtin substring, you can get the old (6.0.0) behavior back by skipping property validation (using VALIDATION_ACTION_SKIP), as described in the “Property Validation” section of PROPERTY QosPolicy, in the RTI Connext Core Libraries User’s Manual.

Note

The section How To Configure Durable Writer History, in the RTI Connext Core Libraries User’s Manual, and Persistence Service API Reference still describe the Durable Writer History properties without the .builtin substring. These are documentation errors, which are fixed in release 7.1.0.

[RTI Issue ID CORE-12240]

4.6.1.2. Durable Writer History properties cannot be set on DomainParticipant

In 6.0.0, you could configure the Durable Writer History properties on the DomainParticipant so they would be applied to all DataWriters belonging to the DomainParticipant.

Now, by default, setting the properties at the DomainParticipant level generates a WARNING in 6.0.1 and an ERROR in 6.1.0 and later releases. For example, if you try to use the Durable Writer History properties in 6.1.0, you will get an error similar to the error below, and DomainParticipant creation will fail. In 6.0.1, you will get warnings, but DomainParticipant creation will be successful.

ERROR [CREATE DP|LC:DISC]DDS_PropertyQosPolicy_validateEntityPropertyNames:Unexpected property: dds.data_writer.history.odbc_plugin.builtin.driver. Closest valid property: dds.data_writer.history.plugin_name. If you wish to proceed with this property name anyway, change 'dds.participant.property_validation_action' to 'VALIDATION_ACTION_SKIP' or 'VALIDATION_ACTION_WARNING'.
ERROR [CREATE DP|LC:DISC]DDS_DomainParticipantQos_is_consistentI:inconsistent QoS property
ERROR [CREATE DP|LC:DISC]DDS_DomainParticipantFactory_create_participant_disabledI:ERROR: Inconsistent QoS

You can get the old (6.0.0) behavior back by skipping property validation (using VALIDATION_ACTION_SKIP), as described in the “Property Validation” section of PROPERTY QosPolicy, in the RTI Connext Core Libraries User’s Manual.

[RTI Issue ID CORE-13516]

4.6.1.3. Fixed in 7.1.0 and 6.1.2

4.6.1.3.1. Creating DynamicDataTypePlugin with TypeCode from discovery and using content filtering causes segmentation fault

This regression was introduced in 6.0.0 and has been fixed in 6.0.1.30, 6.1.2, and 7.1.0. See Creating DynamicDataTypePlugin with TypeCode from discovery and using content filtering causes segmentation fault in the 6.0.0 Regressions section.

4.6.1.3.2. Crash with NULL listeners and non-none status masks in C applications that mix types with and without Zero Copy

This regression was introduced in 6.0.0 and has been fixed in 6.0.1.30, 6.1.2, and 7.1.0. See Crash with NULL listeners and non-none status masks in C applications that mix types with and without Zero Copy in the 6.0.0 Regressions section.

4.6.1.3.3. Application using Monitoring Libraries produces segmentation fault during DataReader creation

This regression was introduced in 6.0.0 and has been fixed in releases 7.1.0 and 6.1.2. See Section 4.7.1.1.3 in the 6.0.0 Regressions section.

4.6.1.4. Fixed in 7.0.0 and 6.1.2

4.6.1.4.1. Continuous creation of TopicQueries may lead to unnecessary memory fragmentation in OS memory allocator

This regression was introduced in 6.0.0 and has been fixed in releases 7.0.0 and 6.1.2. See Continuous creation of TopicQueries may lead to unnecessary memory fragmentation in OS memory allocator in the 6.0.0 Regressions section.

4.6.1.5. Fixed in 6.1.1

4.6.1.5.1. XSD Issue: order enforced in <publisher> tag

This regression was introduced in 6.0.0 and has been fixed in release 6.1.1. See XSD issue: order enforced in <publisher> tag in the 6.0.0 Regressions section.

4.6.1.5.2. Invalid key deserialization for mutable derived types with key members

This regression was introduced in 6.0.0 and has been fixed in release 6.1.1. See Invalid key deserialization for mutable derived types with key members in the 6.0.0 Regressions section.

4.6.1.5.3. Malformed samples with invalid strings not dropped by DataReader in C, traditional C++, and modern C++

This regression was introduced in 6.0.0 and has been fixed in release 6.1.1. See Malformed samples with invalid strings not dropped by DataReader in C, traditional C++, and modern C++ in the 6.0.0 Regressions section.

4.6.1.5.4. Samples lost if multiple readers were created in same locator and push_on_write was set to false

This regression was introduced in 6.0.1 and has been fixed in release 6.1.1.

If push_on_write was set to false in a DataWriter’s DATA_WRITER_PROTOCOL QoS Policy, and multiple DataReaders were created in the same locator (same participant, same port), samples may have been lost.

This potential loss may have occurred when the second or subsequent DataReader was created. When the DataWriter detected the new DataReader, it sent an RTPS gap message, which may have gapped unsent samples. This was only an issue if push_on_write was set to false.

[RTI Issue ID CORE-11515]

4.6.1.5.5. XML parser crashed from infinite recursion when XML QoS configuration contained inheritance loop

This regression was introduced in 6.0.1 and has been fixed in release 6.1.1.

An inheritance loop was formed when a <qos_profile> inherited from itself or when any <xxx_qos> inherited from itself or its encapsulating <qos_profile>. Inheritance can be performed by using the base_name attribute or <base_name> tag. In previous releases, Connext ignored this inheritance loop, but in 6.0.1 it crashed.

The following XML, which was fine in previous releases, caused a crash in 6.0.1:

<qos_profile name="SetIdentityRequest" base_name="SkyKeeperProfile">
    <topic_qos name="SetIdentityRequest">
        <durability>
            <kind>VOLATILE_DURABILITY_QOS</kind>
        </durability>
    </topic_qos>

    <datawriter_qos base_name="SetIdentityRequest"> <!-- Infinite recursion -->
        <batch>
            <enable>true</enable>
            <max_flush_delay>
                <sec>0</sec>
                <nanosec>250000000</nanosec>
            </max_flush_delay>
        </batch>
    </datawriter_qos>

    <datareader_qos name="SetIdentityRequestReader">
        <base_name>
            <element>SetIdentityRequestReader</element>  <!-- Infinite recursion -->
            <element>ControlTowerProfile</element>
        </base_name>
</datareader_qos>
    </datareader_qos>
</qos_profile>

This problem has been fixed in release 6.1.1 by producing an error, instead of a crash, if the parser detects the inheritance loop.

To work around this problem in earlier releases, remove the inheritance loop in your XML file. For example, revise the above XML file as follows:

<qos_profile name="SetIdentityRequest" base_name="SkyKeeperProfile">
    <topic_qos name="SetIdentityRequest">
        <durability>
            <kind>VOLATILE_DURABILITY_QOS</kind>
        </durability>
    </topic_qos>

    <datawriter_qos> <!-- Remove base_name attribute -->
        <batch>
            <enable>true</enable>
            <max_flush_delay>
                <sec>0</sec>
                <nanosec>250000000</nanosec>
            </max_flush_delay>
        </batch>
    </datawriter_qos>

    <datareader_qos> <!-- Remove the base_name tag element -->
        <base_name>
            <element>ControlTowerProfile</element>
        </base_name>
    </datareader_qos>
</qos_profile>

[RTI Issue ID CORE-11731]

4.6.1.5.6. Possible segmentation fault when receiving samples containing wstrings

This regression was introduced in 6.0.1 and 6.1.0 patch releases.

In releases 6.0.1.22 and higher and in release 6.1.0.3, a subscribing application may have crashed when receiving samples containing wstrings. This issue occurred when the following three conditions were all true:

  • The language binding was modern C++.

  • The size of wchar_t was 4-byte.

  • The length of a wstring member in the sample was equal to the maximum allowed. For example:

    struct MyType {
        wstring<5> m1;
    };
    

For this type, the deserialization of a sample with the following value for m1 would lead to a segmentation fault: L"Hello".

This issue has been fixed in release 6.1.1.

[RTI Issue ID CORE-11896]

4.6.1.6. Fixed in 6.1.0

4.6.1.6.1. Possible issues with communication and enabling DomainParticipant on Windows systems if network interface had multiple IP addresses

On Windows platforms, when a network interface has assigned more than one IP address, Connext only detected the one with the lowest IP address. DomainParticipants running on a Windows host with this network configuration could not be discovered through the other IP addresses, causing communication issues.

Besides the communication issues, the DomainParticipant could not be enabled if the allow/deny_interfaces_list properties of the transport restricted the available IP addresses to the ones not reported and there was no other transport enabled on that DomainParticipant.

This regression was introduced in 6.0.1 and has been fixed in 6.1.0 and 6.0.1.20. Now, all the IP addresses of a network interface are detected and will work as expected.

[RTI Issue ID CORE-11232]

4.6.1.6.2. Failure to allocate memory larger than 2 GB

Connext failed to allocate heap memory larger than 2 GB. For example, if the DataWriterQos’s resource_limits.initial_samples was large enough to cause a preallocation of more than 2 GB but less than the available heap memory, then DataWriter creation incorrectly failed.

This problem only affected releases 5.3.1.22 and 6.0.1, and has been fixed in release 6.1.0.

[RTI Issue ID CORE-10057]

4.6.2. Security Plugins

4.6.2.1. Fixed in 7.2.0

4.6.2.1.1. Discovery time scaled poorly

This regression was introduced in 6.0.0 and has been fixed in 7.2.0. See Discovery time scaled poorly in the 6.0.0 Regressions section.

4.6.3. Code Generator

4.6.3.1. Fixed in 6.1.1

4.6.3.1.1. Change in behavior in C and traditional C++ for bounded sequences under certain conditions

This regression was introduced in 6.0.0 and has been fixed in release 6.1.1. See Change in behavior in C and traditional C++ for sequences of bounded strings under certain conditions when code is generated with optimization level 1 or 2 in the 6.0.0 Regressions section.

4.6.3.1.2. Invalid key deserialization for mutable derived types with key members

See Invalid key deserialization for mutable derived types with key members in the 6.0.0 Regressions section.

4.6.3.1.3. Malformed samples with invalid strings not dropped by DataReader in C, traditional C++, and modern C++

See Malformed samples with invalid strings not dropped by DataReader in C, traditional C++, and modern C++ in the 6.0.0 Regressions section.

4.6.4. Routing Service

4.6.4.1. Fixed in 6.1.1

4.6.4.1.1. Unbounded memory growth when restarting Service or creating/deleting DomainRoutes

This regression occurred in 6.0.0 and has been fixed in release 6.1.1. See Unbounded memory growth when restarting Service or creating/deleting DomainRoutes in the 6.0.0 Regressions section.

4.6.4.2. Fixed in 6.1.0

4.6.4.2.1. Create method in Service API fails to parse XML snippets that start with ‘str://’

This regression occurred in 6.0.0 and has been fixed in release 6.1.0. See Create method in Service API fails to parse XML snippets that start with ‘str://’ in the 6.0.0 Regressions section.

4.6.5. Recording Service

4.6.5.1. Fixed in 6.1.0

4.6.5.1.1. Crash if monitoring enabled and TopicGroup matched with Topic name containing ‘/’ character

This regression was introduced in 6.0.1. Recording Service crashed if monitoring was enabled and a TopicGroup matched with a Topic name that contained one or more forward slash (‘/’) characters. This problem has been fixed in 6.1.0 and 6.0.1.7.

[RTI Issue ID RECORD-1153]

4.6.5.1.2. Segmentation fault after discovering application that used UserData QoS Policy

This regression was introduced in 6.0.0. If Recording Service discovered an application that had at least one entity (DomainParticipant, DataReader, or DataWriter) that used the UserData QoS Policy, the behavior was undefined and would likely have resulted in a segmentation fault. This issue has been fixed in 6.1.0 and 6.0.1.3.

[RTI Issue ID RECORD-1125]

4.6.6. Prototyper

4.6.6.1. Fixed in 6.1.0

4.6.6.1.1. Prototyper broken in 6.0.1

Changes to internal components in RTI Connector, which are shared with RTI Prototyper, render Prototyper unusable in 6.0.1.

This problem is fixed in release 6.1.0; however, 6.1.0 is the last release in which Prototyper is supported. After 6.1.0, Prototyper will not be supported. RTI Connector replaces it and supports more scripting languages.

[RTI Issue ID PROT-89]