Actions
バグ #3978
closedshutdownOnNoRtcs関数で終了する場合にエラーが表示される
Start date:
03/07/2017
Due date:
% Done:
100%
Estimated time:
Description
shutdownOnNoRtcs関数で終了する際に以下のエラーが表示されるので修正する。
Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/OpenRTM_aist/CorbaNaming.py", line 157, in isAlive if self._rootContext._non_existent(): File "/usr/local/lib/python2.7/dist-packages/omniORB/CORBA.py", line 561, in _non_existent return self._obj.nonExistent()
Updated by n-miyamoto about 8 years ago
- Status changed from 新規 to 解決
- % Done changed from 0 to 100
発生個所は、NamingManagerのネームサーバ確認、再登録処理の部分。
def update(self): (省略) if not self._names[i].ns.isAlive():
この部分がORBの終了後に呼び出されるとエラーが表示される。
そのため、Managerのshutdown関数内でタイマを先に終了するように変更した。
def shutdown(self): self._rtcout.RTC_TRACE("Manager.shutdown()") self._listeners.manager_.preShutdown() self.shutdownTimer() self.shutdownComponents() self.shutdownNaming() self.shutdownORB() self.shutdownManager()
ただ、shutdownOnNoRtcs関数はタイマのスレッドで呼び出しているため、タイマのスレッドの終了待ちはできず、ネームサーバ確認、再登録処理が実行されてしまう。
そのため、shutdownOnNoRtcs関数では新たにスレッドを生成してshutdown関数を呼び出すように変更した。
def shutdownOnNoRtcs(self): (省略) if len(comps) == 0: self.shutdown_thread = threading.Thread(target=self.shutdown) self.shutdown_thread.start()
これでエラーは表示されなくなりました。
Actions