プロジェクト

全般

プロフィール

バグ #3562

ExtTrigExecutionContextがRTCをexitしてもスレッドが終了しない

n-miyamotoほぼ8年前に追加. ほぼ8年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
-
開始日:
2016/04/26
期日:
進捗率:

100%

予定工数:

説明

実行コンテキストにExtTrigExecutionContextをしてした場合に、RTCをexitしても実行コンテキストのスレッドが終了しない問題

原因①
RTCをexitした際にRTObjectのfinalizeContexts関数内でExtTrigExecutionContextのstop関数を呼び出しますが、このstop関数内でself._worker.stop()を呼び出すためworkerの変数_runningがFalseになります。
この時にtick関数を呼び出しても、workerのisRunning関数がTrueを返すときのみしか1ステップ進める処理を実行しないためsvc関数のself._workerthread._cond.wait()で止められたままになります。

原因②
ExtTrigExecutionContextの変数_svcがFalseにならないため、svc関数内のループが終了しません。

原因③
ExtTrigExecutionContextのデストラクタのTask.__del__(self)がNameErrorを出します

関係しているリビジョン

リビジョン 706 (差分)
miyamotoほぼ8年前に追加

[compat,bugfix] bug fix. refs #3562

履歴

#1 n-miyamotoほぼ8年前に更新

  • ステータス新規 から 終了 に変更
  • 進捗率0 から 100 に変更

原因①
onStopping関数でtick関数を呼び出すように変更しました。

原因②
onStopping関数で_svcをFalseにするように変更しました。

原因③
デストラクタの引数にTask=OpenRTM_aist.Taskを追加しました。

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