OpenRTM / OpenRTM-aist

OpenRTM-aist: RT-Middleware and OMG RTC implementation in C++ implemented by AIST
https://openrtm.org/
Other
19 stars 12 forks source link

RTCがエラー状態から遷移しない場合がある #652

Closed Nobu19800 closed 5 years ago

Nobu19800 commented 5 years ago

Describe the bug RTCがエラー状態に遷移後にリセットできない場合がある。

To Reproduce Steps to reproduce the behavior:

  1. RTCをアクティブ化する
  2. RTCがエラーに遷移するとほぼ同時に非アクティブ化する
  3. See error

Reproducibility 確実に再現する方法は今のところない。

Expected behavior 確実にリセットできるようにする。

Screenshots or Logs

Environment

Additional context この問題が発生した瞬間には非アクティブ化してもRTSEで「事前条件が不正」、「エラーが発生した」等のメッセージが表示されない。ログにもエラーはない。 ただし、状態遷移の待機時にアクティブ状態かそうでないかしか確認していないため、エラー状態に遷移した場合もタイムアウトのエラーが出ないことになる。 つまり実行順序はm_sm.goTo(RTC::ERROR_STATE);->rtobj->goTo(RTC::INACTIVE_STATE);となる。 この後reset_componentを実行したときにはタイムアウトのエラーが発生する。つまりエラー状態から遷移できなくなっている。 実行コンテキストが駆動しなければ状態遷移しないため、実行コンテキストが停止している可能性がある。ログにAll RTCs are INACTIVE. Stopping worker thread.と出ていることから可能性は高いと思います。

Nobu19800 commented 5 years ago

653 で解決済みのため閉じます。