我正在运行一个使用RTI DDS的程序,并且会遇到以下警告消息以及持续的程序崩溃:
No transport available to reach locator shmem://0000:0202:0402:0000:0000:0000:0000:0000:7411
可能导致上述问题的原因是什么?该问题的解决方案是什么?我正在RTI DDS 5.2.0
上运行RHEL 6.8
。
编辑:
这里也是QOS文件
?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>
答案 0 :(得分:3)
@ jgr208&#34;没有可用的交通工具到达定位器&#34;消息是响应您的应用程序在发现的第一阶段接收定位器,它没有传输。这只是一个警告,不会导致您的应用程序崩溃。实际上,这可能是正常行为,具体取决于您的应用程序如何使用传输进行设置。以下知识库文章对此进行了描述:
https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean
但是,5.2.0中的警告消息可能会有所不同。
此警告消息不会导致崩溃。因此,我们需要更多信息来确定崩溃发生的原因。你能从核心转储中获得堆栈跟踪,还是通过gdb运行应用程序来查看后向跟踪?