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]