8.4.1. What’s New in 2.4.14.1¶
2.4.14.1 is a cumulative bug fix release and does not include any new features.
8.4.1.1. Important Interoperability Changes¶
This release of Connext Micro includes the following changes in API compatability with previous release:
DDS_DomainParticipantFactory_get_instance must be called before other APIs. This is required to ensure that a platform integration is properly configured and initialized before other APIs are called. APIs that need special attention have an additional attribute
API Restriction
to indicate any restrictions.
8.4.2. What’s Fixed in 2.4.14.1¶
8.4.2.1. Invalid samples in batched data did not count as ‘lost samples’¶
Invalid samples in batched data were not counted as lost samples, and did not trigger Connext Micro to call on_sample_lost() when the “on_sample_lost” notification was enabled.
This issue has been resolved.
[RTI Issue ID MICRO-2289]
8.4.2.2. Local variables in header file may have caused compiler warning¶
Local variables were incorrectly defined in ReaderHistory.c and may have caused a compiler warning.
This issue has been resolved.
[RTI Issue ID MICRO-2785]
8.4.2.3. Non-default timer resolutions may have caused an incorrect timeout¶
Compiling Connext Micro with a non-default timer resolution may have caused incorrect timeouts.
This issue has been resolved.
[RTI Issue ID MICRO-2794]
8.4.2.4. Missing checks for max_routes_per_reader and max_routes_per_writer¶
The DDS_DataReaderQos.reader_resource_limits.max_routes_per_writer and DDS_DataWriterQos.writer_resource_limits.max_routes_per_reader were missing a check that the values were in the range [1,2000]. They were also missing from the methods DDS_DataReaderQos_is_equal and DDS_DataWriterQos_is_equal respectively.
This issue has been resolved.
[RTI Issue ID MICRO-2830, MICRO-2937]
8.4.2.5. Missing NULL checks for enabled_transports¶
In previous releases, it was not checked that the enabled_transports QoS policy setting did not contain NULL pointers.
This issue has been resolved.
[RTI Issue ID MICRO-3117]
8.4.2.6. Possible exception due to misaligned RTPS header¶
In previous releases, if multiple RTPS messages were received in the same UDP payload, a misaligned RTPS message header could cause an exception.
Note
RTI Connext Micro does not send multiple RTPS messages in the same UDP payload.
This issue has been resolved.
[RTI Issue ID MICRO-2866]
8.4.2.7. DDS_SubscriptionBuiltinTopicData_copy did not copy the PresentationQosPolicy¶
The DDS_SubscriptionBuiltinTopicData_copy function did not copy the PresentationQosPolicy.
This issue has been resolved.
[RTI Issue ID MICRO-2897]
8.4.2.8. Possible failure to start timer¶
On architctures using the posix port of Connext Micro, the DomainParticipantFactory may have failed to initialize if compiled to use signals or if CLOCK_MONOTONIC was not available.
This issue has been resolved.
[RTI Issue ID MICRO-2904]
8.4.2.9. Sample timestamp now set to 0 if timestamp cannot be retrieved¶
If the reception timestamp for a sample cannot be retrieved, the reception timestamp is set to 0.
[RTI Issue ID MICRO-2909]
8.4.2.10. Qos_copy functions did not validate input arguments¶
In previous releases, the Qos_copy APIs did not validate that the input arguments were not NULL.
This issue has been resolved.
[RTI Issue ID MICRO-2913]
8.4.2.11. Unused parameter DOMAIN_PARTICIPANT_RESOURCE_LIMITS.matching_reader_writer_pair_allocation removed¶
The QoS policy setting DOMAIN_PARTICIPANT_RESOURCE_LIMITS.matching_reader_writer_pair_allocation was not used and has been removed from the DOMAIN_PARTICIPANT_RESOURCE_LIMITS structure.
[RTI Issue ID MICRO-2915]
8.4.2.12. DDS_DomainParticpant_add_peer may have returned success on failure¶
DDS_DomainParticpant_add_peer may have returned success even if the peer was not added.
This issue has been resolved.
[RTI Issue ID MICRO-2929]
8.4.2.13. DDS_StringSeq_copy did not validate input arguments¶
In previous versions, DDS_StringSeq_copy did not check that the source and destination arguments were different before copying.
This issue has been resolved.
In addition, the documentation for Seq_copy has been updated to clearly state that overlapping memory regions are not supported, with the exception of copying to itself.
[RTI Issue ID MICRO-2964]
8.4.2.14. Memory leak in C++ classes for builtin topic data types and certain QoSes¶
SupportMethodsGen.hxx did not implement a destructor, which could have caused a memory leak when using the C++ API for builtin topic data types and certain QoSes.
This problem has been fixed.
[RTI Issue ID MICRO-2971]
8.4.2.15. Possible NULL pointer exception in generated code if the system was out of memory¶
In previous releases, it was possible to get a NULL pointer exception in the generated code if the system was out of memory during initialization.
This issue would have occurred during DDS entity creation, as memory is only allocated during entity creation.
This issue has been resolved.
[RTI Issue ID MICRO-2986]
8.4.2.16. A DataWriter could run out of resources if sample was not added to cache¶
In rare cases, a DataWriter could run out of resources if a sample could be successfully serialized, but not added to the writer cache.
This issue has been resolved.
[RTI Issue ID MICRO-3034]
8.4.2.17. Missing source code files¶
In previous releases, the following source code files were missing:
UDPTransformations.c
UDPTransformations.h
DPSEVersion.c
This problem has been fixed.
[RTI Issue ID MICRO-3042]
8.4.2.18. Possible serialization beyond stream buffer¶
In previous releases, CDR_Stream_check_size did not check for underflow. As a result, it was possible to serialize data beyond the buffer boundary if the buffer assigned to the stream was too small.
This is only an issue for applications assigning too small of a buffer to a stream.
This issue has been resolved.
[RTI Issue ID MICRO 3147, MICRO-3200]
8.4.2.19. RELIABILITY.max_blocking_time must be zero¶
In previous releases, a non-zero RELIABILITY.max_blocking_time was supported on a DataReader. This feature is not supported in this release.
[RTI Issue ID MICRO-3148]
8.4.2.20. Possible DataReader or DataWriter creation failure with multiple DomainParticipants¶
In previous releases, creating DataReaders or DataWriters in different threads for different DomainParticipants could fail due to a race condition.
This issue has been resolved.
[RTI Issue ID MICRO-3151]
8.4.2.21. Incorrect lease_duration may have been used for a discovered participant¶
In previous releases, if the lease_duration was not sent by a remote DomainParticipant, a previously received value was used instead.
This issue has been resolved.
Note that RTI’s DDS implementations send the lease_duration.
[RTI Issue ID MICRO-3254]
8.4.2.22. Missing consistency check for DESTINATION_ORDER.source_timestamp_tolerance¶
In previous releases, a check that DESTINATION_ORDER.source_timestamp_tolerance was normalized was missing (nanosecond < 1 seconds).
This issue has been resolved.
[RTI Issue ID MICRO-3272]
8.4.2.23. Improved error detection for unresolved addresses¶
In previous releases, an unresolved address was ignored. In this release, if an address cannot be resolved, it results in a failure. This means that all addresses passed to the add_peer API and the enabled_transports QoS policy must be valid, otherwise entity creation will fail.
[RTI Issue ID MICRO-3276]
8.4.2.24. DDS_StatusCondition_set_enabled_statuses did not trigger if an active condition was enabled¶
In previous releases, if a StatusCondition enabled by a call to DDS_StatusCondition_set_enabled_statuses was already active, the StatusCondition did not trigger.
This issue has been resolved.
[RTI Issue ID MICRO-3308]
8.4.2.25. Race condition in DDS enable APIs¶
In previouses releases, a race condition existed if the same DDS entity was enabled from multiple threads at the same time.
This issue has been resolved.
[RTI Issue ID MICRO-3311]
8.4.2.27. DDS WaitSet may have timed out later than timeout value¶
In very rare cases, an error message taking a mutex may have been logged when using the POSIX real-time timers. This may have resulted in a delayed timeout for DDS_WaitSets.
This issue has been resolved.
[RTI Issue ID MICRO-3330]
8.4.2.28. SYSTEM_RESOURCE_LIMITS.max_components QoS policy cannot be changed¶
In previous releases, the documentation incorrectly specified that the
SYSTEM_RESOURCE_LIMITS.max_components
QoS policy could be changed. This has
been corrected to state that it cannot be changed. The default value has also
been increased to 64.
[RTI Issue ID MICRO-4102]
8.4.2.29. Incorrect heartbeat sent before first sample when first_write_sequence_number is not 1¶
In previous releases, if the DataWriterQos.protocol.rtps_reliable_writer.first_write_sequence_number
was different from the default value of 1, heartbeats sent before the first
sample was written would indicate 1 as the first sample available. This would
cause a DataReader to wait for samples with a sequence number less than
DataWriterQos.protocol.rtps_reliable_writer.first_write_sequence_number
until a heartbeat with the correct first sequence number was received.
This issue has been resolved.
[RTI Issue ID MICRO-4081]
8.4.2.30. Robustness check added to verify that participant GUIDs are unique within a DomainParticipantFactory¶
A check has been added to DomainParticipantFactory_create_participant
to validate that DomainParticipants created within the same
DomainParticipantFactory
have unique GUIDs, and return nil if this is not the
case.
[RTI Issue ID MICRO-4062]
8.4.2.31. DDS_Entity_enable was not thread-safe for a DomainParticipant¶
DDS_Entity_enable was not thread-safe, which may have led to race conditions. This issue has been resolved.
[RTI Issue ID MICRO-3381]
8.4.2.32. Missing input verification for API functions¶
The following functions did not have a precondition check:
DDS_PublicationBuiltinTopicData_initialize()
DDS_SubscriptionBuiltinTopicData_initialize()
DDS_ParticipantBuiltinTopicData_initialize()
This issue has been resolved.
[RTI Issue ID MICRO-3442]
8.4.2.33. Incorrect return values from REDA_String¶
REDA_String_compare and REDA_String_ncompare would return incorrect values when NULL was passed in as one of the parameters. This issue has been resolved.
[RTI Issue ID MICRO-3461]
8.4.2.34. Incorrect return values from QoS APIs¶
The following functions have been corrected to return DDS_RETCODE_BAD_PARAMETER instead of DDS_RETCODE_PRECONDITION_NOT_MET:
DDS_DomainParticipantFactoryQos_copy
DDS_DomainParticipantFactoryQos_initialize
DDS_DomainParticipantQos_copy
DDS_DomainParticipantQos_initialize
DDS_SubscriberQos_copy
DDS_SubscriberQos_initialize
DDS_DataReaderQos_copy
DDS_DataReaderQos_initialize
[RTI Issue ID MICRO-3572]
8.4.2.35. DDS_Wstring_cmp did not match the implementation name DDS_Wstring_compare¶
The DDS Wstring compare function was incorrectly documented as
being DDS_Wstring_cmp
instead of DDS_Wstring_compare
.
This issue has been resolved.
[RTI Issue ID MICRO-3529]
8.4.2.36. Race condition during participant discovery¶
A race condition existed during participant discovery.
This issue has been resolved.
[RTI Issue ID MICRO-3365]
8.4.2.37. A DataWriter with BEST_EFFORT and TRANSIENT_LOCAL may run out of resources¶
A DataWriter with BEST_EFFORT and TRANSIENT_LOCAL QoS policies may run out
of resources when DataWriterQos.resource_limits.max_samples_per_instance
> 1
.
Note
Resending of historical samples
(DataWriterQos.durability.kind = TRANSIENT_LOCAL
) requires a
DataWriterQos.reliability.kind = RELIABLE
Qos Policy. Thus, the
combination of BEST_EFFORT and TRANSIENT_LOCAL is not useful, although it
is a legal combination.
[RTI Issue ID MICRO-4508]
8.4.2.38. Connext Micro may have repeated requesting a sample that was no longer available from a DataWriter¶
If Connext Micro detects a missing sample when using DDS_RELIABLE_RELIABILITY_QOS
reliability, it will request the sample to be resent, but if the sample is
no longer available from the DataWriter, the DataWriter may send a GAP message
to indicate the sample is not longer available.
Connext Micro failed to interpret the GAP message correctly if the first sequence number in the GAP message was equal to the bitmap base of the GAP message. In this case, Connext Micro failed to ignore the no-longer-available sample and kept sending a request for the sample.
This problem has been fixed.
[RTI Issue ID MICRO-4668]
8.4.2.39. DDS_Subscriber_lookup_datareader may return a DataReader that was created by a different Subscriber¶
The DDS_Subscriber_lookup_datareader
API searches for a DataReader for a
given TopicDescription created by the Subscriber. However, in previous releases,
the returned DataReader could belong to a different Subscriber if multiple
DataReaders were created for the same Topic in different Subscribers.
This problem has been fixed.
[RTI Issue ID MICRO-4569]
8.4.2.40. DDS_Publisher_lookup_datawriter may return a DataWriter that was created by a different Publisher¶
The DDS_Publisher_lookup_datawriter
API searches for a DataWriter for a
given Topic created by the Publisher. However, in previous releases, the
returned DataWriter could belong to a different Publisher if multiple DataWriters
were created for the same Topic in different Publishers.
This problem has been fixed.
[RTI Issue ID MICRO-4570]
8.4.2.41. A reliable DataWriter may ignore requests to resend samples¶
If a DataWriter has received multiple requests to resend samples before its periodic heartbeat period expires, the DataWriter may ignore the request if the requested sample has been sent and is also the first expected sample by the requesting DataReader.
This problem has been fixed.
[RTI Issue ID MICRO-5183]
8.4.2.42. Compiler warning due to reliance on deprecated implicit copy constructor for C++¶
In previous releases, compiling with C++ could produce the following warning:
warning: definition of implicit copy constructor
This issue has been fixed. This release adds copy constructors for C++ classes where the use of implicit implicit copy constructors have been deprecated.
[RTI Issue ID MICRO-5340]
8.4.2.43. RTPS message may have been rejected¶
An RTPS message may have been rejected if it had a HDR_EXT and the last RTPS submessage had a length that is not a multiple of 4.
This issue has been fixed.
[RTI Issue ID MICRO-5387]
8.4.2.44. Warning about hostname not supported in posixSystem.c¶
Compiling posixSystem.c could produce the following warning:
warning: RTI Micro does not support retrieving the hostname for CERT. Set hostname manually [-Wcpp]
This warning was unnecessary and has been removed.
[RTI Issue ID MICRO-5412]
8.4.2.45. False positive compiler warning¶
Compiling with GCC 11 could produce the following warning:
warning: ‘presentation’ may be used uninitialized [-Wmaybe-uninitialized]
This was a false positive since presentation
was deserialized. This
problem has been fixed.
[RTI Issue ID MICRO-5428]