2016-10-05 3 views
0

나는 일정한 프로그램이 충돌과 함께 다음과 같은 경고 메시지가 표시 RTI DDS를 사용하고 유지 프로그램을 실행하고 있습니다 :RTI DDS 경고 충돌 프로그램

No transport available to reach locator shmem://0000:0202:0402:0000:0000:0000:0000:0000:7411 위의 문제의 원인이 될 수 무엇

과는 무엇을 문제의 가능한 해결책? 나는 RTI DDS 5.2.0RHEL 6.8에 달리고있다. 편집

:

여기

도 jgr208은 "사용할 수있는 전송이 로케이터에 도달하지합니다"라는 메시지 @ 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>[email protected]://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>[email protected]://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

RTI 구성이 공유 메모리 전송을 허용합니까? 사용자가 사용할 수있는 공유 메모리의 양에 대한 제한이 있습니까 (예를 들어'ulimit -l'을 확인하십시오)? – mindriot

+0

@mindriot RTI 구성이 허용하는지 어떻게 확인하나요? 코드 또는 QOS 파일에 있는지 확실하지 않으므로. 'ulimit -l'은 64의 결과를 보였습니다. – jgr208

+0

https://community.rti.com/examples/using-qos-profiles 및 https://community.rti.com/examples/built-qos-profiles를 참조하십시오. . 아무 것도 수정하지 않았다면 기본값으로 shmem 전송을 허용해야합니다. 'ulimit'에 대해서는 표준값 (64KB)입니다. 실행하기 전에'ulimit -l unlimited'를 설정해보십시오 (아마 루트 일 필요가 있습니다). – mindriot

답변

3

이다는 발견의 첫 번째 단계에서 로케이터를받는 응용 프로그램에 대한 응답입니다 그것을위한 운송 수단이 없다는 것입니다. 경고 일 뿐이므로 응용 프로그램이 충돌하지 않습니다. 실제로 응용 프로그램이 전송으로 설정되는 방법에 따라 정상적인 동작 일 수 있습니다. 이 작업은 다음 기술 자료 문서에서 설명 :

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

그러나, 경고 메시지가 5.2.0에서 다를 수 있습니다.

이 경고 메시지로 인해 충돌이 발생하지 않습니다. 따라서 충돌이 발생하는 이유를 확인하기 위해 더 많은 정보가 필요합니다. 코어 덤프에서 스택 추적을 얻거나 gdb를 통해 애플리케이션을 실행하여 백 트레이스를 볼 수 있습니까?

+0

예, 몇 분 전에 경고가 충돌을 일으키지 않았다고 생각했습니다. 위의 QOS를 올려 놓았고 응용 프로그램을 실행하는 두 시스템에 QOS가 사용되었습니다. – jgr208

+0

문제를 야기하는 QoS에 아무것도 표시되지 않습니다. 여기서 도움을 얻으려면 gdb를 통해 실행하고 충돌이 발생하면 백 트레이스를 얻는 것이 가장 좋습니다. 실제 명령이 필요한지 알려주십시오. – BobbyV

+0

그래서 '로케이터 shmem : // 0000 : 0202 : 0704 : 0000 : 0000 : 0000 : 0000 : 0000 : 7410'에 도달 할 수있는 전송이 없도록해야하고'로케이터 shmem에 도달 할 수있는 전송 불가 ' // 0000 : 0202 : 0704 : 0000 : 0000 : 0000 : 0000 : 0000 : 7411' 경고? – jgr208

관련 문제