5.4.17. Crashes
5.4.17.1. [Critical] Stack smashing error when serializing strings with RTI_CDR_SIZEOF_LONG_DOUBLE set to 16 in C++11 in release mode using GCC compiler
A stack smashing fault occurred when serializing strings if the
RTI_CDR_SIZEOF_LONG_DOUBLE configuration was set to 16 in C++11 in
release mode using the GCC compiler. Compiling the code reported a
warning similar to:
include/ndds/hpp/rti/topic/cdr/InterpreterHelpers.hpp:165:31: note: the ABI of passing union with ‘long double’ has changed in GCC 4.4
165 | static RTIXCdrMemberValue get_value_pointer(
| ^~~~~~~~~~~~~~~~~
[RTI Issue ID CORE-14999]
5.4.17.2. [Critical] Possible crash on MIGInterpreter_parse while receiving data at the same time that entities are removed, on architectures with a weak memory model
On architectures that use a weak memory model, such as Arm or PowerPC,
the application may have crashed when receiving data at the same time
that the DataReader or a matching DataWriter was being removed. The
crash happened on the function MIGInterpreter_parse() in some rare
cases, due to a reordering of the memory storages. Now, the crash will
not happen; the mentioned API can be called at the same time that a
matching entity is removed.
[RTI Issue ID CORE-14923]
5.4.17.3. [Critical] Race condition in RTI Monitoring Library 2.0 caused a crash
A race condition in RTI Monitoring Library 2.0 caused a segmentation fault in the application being monitored. The likelihood of the race condition occurring was extremely low.
[RTI Issue ID MONITOR-691]
5.4.17.4. [Critical] Segmentation fault if Application Kind contained more than 255 characters when calling RTI_DL_DistLogger_getInstance
If the Application
Kind
contained more than 255 characters, accessing the singleton instance of
RTI Distributed Logger by the RTI_DL_DistLogger_getInstance method
crashed with a segmentation fault.
[RTI Issue ID DISTLOG-244]
5.4.17.5. [Critical] Potential crash if creation of Publisher or Subscriber failed while database garbage collection process was running
RTI uses an internal in-memory “database” to store information about entities created locally as well as remote entities found during the discovery process. This database utilizes a background thread that periodically performs garbage collection on records related to deleted entities.
A potential crash could occur due to a race condition if the creation of
a Publisher or Subscriber failed while the periodic garbage
collection thread was active. Prior to the crash, an error message was
logged in the DDS_Subscriber_createI or DDS_Publisher_createI
functions.
The probability of encountering this race condition was low.
[RTI Issue ID CORE-15337]
5.4.17.6. [Critical] Possible crash when calling any write operation on architectures with a weak memory model
On architectures that use a weak memory model, such as Arm-based
architectures, the application may have crashed when calling any write
operation, FooDataWriter_write(),
FooDataWriter_write_w_timestamp or FooDataWriter_write_w_params
(or their C++ equivalents). The crash happened in some rare cases due to
a reordering of the memory storages.
[RTI Issue ID CORE-15103]
5.4.17.7. [Critical] Stack overflow when parsing very long SQL filter expressions
If a SQL filter expression contained too many OR/AND expressions
in a chain, parsing it may have caused a stack overflow and a program
crash. For example:
a=1 OR a=2 OR a=3 OR a4 OR ... OR a=123456
[RTI Issue ID CORE-14985]
5.4.17.8. [Critical] Possible crash when creating DomainParticipants concurrently
Creating DomainParticipants concurrently could have caused a crash if, during the creation process, one of the threads accessed the typecode of the internal builtin types while another thread was initializing it.
[RTI Issue ID CORE-14764]
5.4.17.9. [Critical] Crash when writing data on a ContentFilteredTopic in combination with transient durability and delegated reliability
In scenarios where a ContentFilteredTopic was used, and the DataWriter
and DataReader were using transient durability and delegated
reliability (the delegate_reliability property is set to 1), a call
to write() would crash if writer-side filtering was applied.
[RTI Issue ID CORE-15350]
5.4.17.10. [Major] Possible crash after memory allocation failures
A few cases were found where memory allocation failures were not properly handled. This could have led to null pointer dereferences if memory allocation failed.
[RTI Issue ID CORE-15024]
5.4.17.11. [Major] Using unbounded or very large types with query conditions in Python API could cause crash
If you created a query condition using the Python API and the serialized size of the samples that were evaluated against the query condition were large enough to cause a memory allocation failure, a crash could occur if the memory allocation failure was ignored and you continued to use the DataReader that generated the allocation failure.
[RTI Issue ID CORE-15029]
5.4.17.12. [Major] Segmentation fault if application ran out of memory while generating a log message
If the application ran out of memory while generating a log message,
then the application would crash with a segmentation fault in the
internal function ADVLOGLogger_destroyMessageQueueElement. This
problem only affected releases 6.1.0 and above.
[RTI Issue ID CORE-15432]