Project

General

Profile

バグ #3562

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

Added by n-miyamoto about 8 years ago. Updated about 8 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
04/26/2016
Due date:
% Done:

100%

Estimated time:

Description

実行コンテキストに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を出します

Associated revisions

Revision 706 (diff)
Added by miyamoto about 8 years ago

[compat,bugfix] bug fix. refs #3562

History

#1 Updated by n-miyamoto about 8 years ago

  • Status changed from 新規 to 終了
  • % Done changed from 0 to 100

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

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

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

Also available in: Atom PDF