プロジェクト

全般

プロフィール

バグ #2206

複合コンポーネントの解体時にthreadに関するエラーが発生する。

kurihara12年以上前に追加. 約12年前に更新.

ステータス:
新規
優先度:
通常
担当者:
対象バージョン:
開始日:
2011/08/08
期日:
進捗率:

80%

予定工数:

説明

複合コンポーネントを解体する処理の過程で、threadingのjoin()をコールした際に以下のエラーが発生する。
ただし、解体時に毎回発生するわけではなく不定期に発生する。

Exception RuntimeError: RuntimeError('cannot join current thread',) in <bound me
thod PeriodicExecutionContext.__del__ of <OpenRTM_aist.PeriodicExecutionContext.
PeriodicExecutionContext instance at 0x027A3508>> ignored

上記エラーは、Pythonのthreadingモジュール内のjoin()メソッドで、thread.get_ident()をコールし、
自身のスレッドのidと、join()の対象となっているスレッドのidが同じ場合に発生する。

履歴

#1 kurihara12年以上前に更新

  • 進捗率0 から 10 に変更

デバッグのため、thread.get_ident()を出力してみた.
複合コンポーネントの作成と解体を繰り返すと、解体時のthread.get_ident()の値は毎回同じであってが、
エラーが発生した際には異なる値となっていた。
なぜ、thread.get_ident()が異なる値を返すのかはわかっていない。

#2 kurihara12年以上前に更新

  • 進捗率10 から 80 に変更

Task.pyのデストラクタでtthreading.ThreadのisAlive()にてスレッドが生存しているか
確認を行い、生存している場合はそのスレッドに対してjoin()を行っているが、
スレッドが終了しているにも関わらずisAlive()がTrueとなる場合がある。

現在はjoin()を呼ばないようにしている。 r445

他の形式にエクスポート: Atom PDF