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]