5.11. APIs (C or Traditional C++)
5.11.1. [Critical] Traditional C++ get_participants() API returned invalid pointer if Monitoring Library 2.0 was enabled
If RTI Monitoring Library 2.0 was enabled in a Traditional C++
Connext application through the MonitoringQosPolicy, the
DDSDomainParticipantFactory::get_participants()
API returned an
extra invalid DomainParticipant pointer, in addition to the
DomainParticipants created by your application. Dereferencing that
pointer had an undefined behavior, leading to a segmentation fault in
the worst case.
This issue happened because the Traditional C++
DomainParticipantFactory instance is used to enable Monitoring
Library 2.0 and to create the dedicated DomainParticipant that the
library uses. That is a C DomainParticipant, which doesn’t have an
associated C++ DomainParticipant. The get_participants()
API added
the nonexistent C++ Monitoring DomainParticipant anyway, which had an
arbitrary value.
The get_participants()
API now only returns valid
DomainParticipants for C++.
[RTI Issue ID CORE-13925]
5.11.2. [Major] Potential error when waiting for samples in C API
When using one of the functions to wait for samples on either the
Requester or the Replier, a potential error may have occurred in which
the wait ended with an error instead of returning
DDS_RETCODE_TIMEOUT
when it timed out.
[RTI Issue ID REQREPLY-126]