0

I am running a program that uses RTI DDS and keep encounter the following warning message along with constant program crashes:

No transport available to reach locator shmem://0000:0202:0402:0000:0000:0000:0000:0000:7411

What could be causing the above issue and what is a possible solution to the issue? I am running RTI DDS 5.2.0 on RHEL 6.8.

EDIT:

Here is also the QOS file

?xml version="1.0"?>
<dds>
    <qos_library name="Keep_History_Library">
        <qos_profile name="Keep_Deep_History_profile" is_default_qos="true">
            <participant_qos>
                <discovery>
                    <initial_peers>
                        <element>239.255.0.1</element>
                        <element>4@builtin.udpv4://127.0.0.1</element>
                        <element>builtin.shmem://</element>
                    </initial_peers>
                    <multicast_receive_addresses>
                        <element>239.255.0.1</element>
                    </multicast_receive_addresses>
                </discovery>
                <property>
                    <value>
                        <!--UDP/IP Transport configuration -->
                        <element>
                            <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
                            <value>65536</value>
                        </element>
                        <element>
                            <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
                            <value>1000000</value>
                        </element>
                        <element>
                            <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
                            <value>2000000</value>
                        </element>
                        <!-- Definition of the flow controller See users' manual section 
                        6.6 FlowControllers -->
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.scheduling_policy</name>
                            <value>DDS_RR_FLOW_CONTROLLER_SCHED_POLICY</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.period.sec</name>
                            <value>0</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.period.nanosec</name>
                            <value>10000000</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.max_tokens</name>
                            <value>100</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.tokens_added_per_period</name>
                            <value>40</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.tokens_leaked_per_period</name>
                            <value>0</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.bytes_per_token</name>
                            <value>66000</value>
                        </element>
                    </value>
                </property>
            </participant_qos>
       <participant_factory_qos>
            <logging>
                <verbosity>ALL</verbosity>
                <category>ALL</category>
                <print_format>TIMESTAMPED</print_format>
                <output_file>/root/Desktop/ddslog.txt</output_file>
            </logging>
        </participant_factory_qos>
            <datawriter_qos name="ReliableWriter">
                <publish_mode>
                    <kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
                    <flow_controller_name>DEFAULT_FLOW_CONTROLLER_NAME</flow_controller_name>
                </publish_mode>
                <durability>
                    <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
                </durability>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>10</depth>
                </history>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <publication_name>
                    <name>DataWriter</name>
                </publication_name>
            </datawriter_qos>

            <datareader_qos name="ReliableReader">
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>10</depth>
                </history>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <durability>
                    <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
                </durability>
                <subscription_name>
                    <name>DataReader</name>
                </subscription_name>
            </datareader_qos>
        </qos_profile>

        <qos_profile name="Keep_Short_History_profile" base_name="Keep_Deep_History_profile">
            <participant_qos>
                <discovery>
                    <initial_peers>
                        <element>239.255.0.1</element>
                        <element>4@builtin.udpv4://127.0.0.1</element>
                        <element>builtin.shmem://</element>
                    </initial_peers>
                    <multicast_receive_addresses>
                        <element>239.255.0.1</element>
                    </multicast_receive_addresses>
                </discovery>
                <property>
                    <value>
                        <!--UDP/IP Transport configuration -->
                        <element>
                            <name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
                            <value>65536</value>
                        </element>
                        <element>
                            <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name>
                            <value>1000000</value>
                        </element>
                        <element>
                            <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
                            <value>2000000</value>
                        </element>
                        <!-- Definition of the flow controller See users' manual section 
                        6.6 FlowControllers -->
                        <element>
                            <name>
                                dds.flow_controller.token_bucket.MyFlowController.scheduling_policy
                            </name>
                            <value>DDS_RR_FLOW_CONTROLLER_SCHED_POLICY</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.period.sec</name>
                            <value>0</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.period.nanosec</name>
                            <value>10000000</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.max_tokens</name>
                            <value>100</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.tokens_added_per_period</name>
                            <value>40</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.tokens_leaked_per_period</name>
                            <value>0</value>
                        </element>
                        <element>
                            <name>dds.flow_controller.token_bucket.MyFlowController.token_bucket.bytes_per_token</name>
                            <value>66000</value>
                        </element>
                    </value>
                </property>
            </participant_qos>
       <participant_factory_qos>
            <logging>
                <verbosity>ALL</verbosity>
                <category>ALL</category>
                <print_format>TIMESTAMPED</print_format>
                <output_file>/root/Desktop/ddslog.txt</output_file>
            </logging>
        </participant_factory_qos>
            <datawriter_qos name="ReliableWriter">
                <publish_mode>
                    <kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
                    <flow_controller_name>DEFAULT_FLOW_CONTROLLER_NAME</flow_controller_name>
                </publish_mode>
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>1</depth>
                </history>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <durability>
                    <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
                </durability>
                <publication_name>
                    <name>HistoryDataWriter</name>
                </publication_name>
            </datawriter_qos>

            <datareader_qos name="ReliableReader">
                <history>
                    <kind>KEEP_LAST_HISTORY_QOS</kind>
                    <depth>1</depth>
                </history>
                <reliability>
                    <kind>RELIABLE_RELIABILITY_QOS</kind>
                </reliability>
                <durability>
                    <kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
                </durability>
                <subscription_name>
                    <name>HistoryDataReader</name>
                </subscription_name>
            </datareader_qos>
        </qos_profile>
    </qos_library>
</dds>
jgr208
  • 2,896
  • 9
  • 36
  • 64
  • Does your RTI configuration permit shared-memory transports? Does your user have a tight limitation on the amount of shared memory it may use (check for example `ulimit -l`)? – mindriot Oct 06 '16 at 15:38
  • @mindriot how would I check if my RTI configuration permits that? Since I am not sure if that would be in the code or QOS file. `ulimit -l` showed a result of 64. – jgr208 Oct 06 '16 at 19:32
  • See https://community.rti.com/examples/using-qos-profiles, and possibly https://community.rti.com/examples/built-qos-profiles. If you haven't modified anything yourself, the defaults should allow shmem transport anyway. Regarding `ulimit`, that's the standard value (64KB). Try setting `ulimit -l unlimited` before executing (probably need to be root). – mindriot Oct 06 '16 at 20:05
  • Some other things to check: (1) the `NDDS_DISCOVERY_PEERS` environment variable; (2) check whether all your participants use the same RTI version (maybe you have a compatibility problem). (3) see if `rtiddsspy` gives you any clue. – mindriot Oct 06 '16 at 20:08
  • @mindriot they all use the same version and I set the initial peers using https://community.rti.com/kb/how-do-i-set-initial-peers-and-multicast-receive-address-programmatically-or-xml I did not set the `NDDS_DISCOVERY_PEERS`, and `rtiddsspy` did not give any hints same message as above. I'll also try the `ulimit` suggestion. – jgr208 Oct 06 '16 at 20:11

1 Answers1

3

@jgr208 The "No transport available to reach locator" message is in response to your application receiving a locator during the first phase of discovery that it does not have a transport for. This is a warning only and will not cause your application to crash. In fact it might be normal behavior depending on how your applications are set up with transports. This is described in the following knowledge base article:

https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean

However, the warning message might look different in 5.2.0.

This warning message will not cause the crash. So we'll need more information to determine why the crash is happening. Can you get a stack trace from a core dump, or run your application through gdb to see the back trace?

BobbyV
  • 51
  • 3
  • yea just figured out a couple minutes ago the warning wasn't causing a crash, I put my QOS above and is the QOS used on both systems running the application. – jgr208 Oct 06 '16 at 20:22
  • I don't see anything in the QoS that should cause an issue. I think your best bet to get help here is to run it through gdb and get a backtrace once it crashes. Let me know if you need the actual commands. – BobbyV Oct 06 '16 at 20:32
  • so you dont see anything that should be causing the `No transport available to reach locator shmem://0000:0202:0704:0000:0000:0000:0000:0000:7410` and `No transport available to reach locator shmem://0000:0202:0704:0000:0000:0000:0000:0000:7411` warnings? – jgr208 Oct 06 '16 at 20:35
  • Not really. You are not disabling any of the builtin transports (at least in the QoS), so shared memory is enabled by default (just like @mindriot already mentioned). Are your applications running on separate machine? – BobbyV Oct 06 '16 at 20:49
  • yes they are on two different machines on the same network. – jgr208 Oct 06 '16 at 20:52
  • You can also try running rtiddsping on both machines with one of them using the -subscriber option. So on one machine run > rtiddsping -domainId XX -qosFile QOS_FILENAME -qosProfile Keep_History_Library::Keep_Deep_History_profile where XX is the domain you are testing on and QOS_FILENAME is your QoS XML file. If you are using the default filename (USER_QOS_PROFILES.xml) in the same folder then omit -qosFile. and on the other run use the same options but add -subscriber. – BobbyV Oct 06 '16 at 21:08
  • they do communicate on the network so I am not sure if ddsping will give me any more information about the warnings. – jgr208 Oct 06 '16 at 21:17