Closed Nobu19800 closed 5 years ago
Describe the bug RTCがエラー状態に遷移後にリセットできない場合がある。
To Reproduce Steps to reproduce the behavior:
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.と出ていることから可能性は高いと思います。
m_sm.goTo(RTC::ERROR_STATE);
rtobj->goTo(RTC::INACTIVE_STATE);
reset_component
All RTCs are INACTIVE. Stopping worker thread.
Describe the bug RTCがエラー状態に遷移後にリセットできない場合がある。
To Reproduce Steps to reproduce the behavior:
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.
と出ていることから可能性は高いと思います。