[openrtm-users 00907] Re: ver 0.4.2におけるnon-blocking modeの不具合(?)

kurihara shinji shinji.kurihara @ aist.go.jp
2009年 8月 5日 (水) 17:22:30 JST


松坂様

お世話になっております。
産総研 栗原です。

ver 0.4.2におけるnon-blocking modeの不具合に関してご報告を頂き、
有難うございます。

ご指摘の通り、non-blocking modeの場合、Manager::shutdown()が複数
回呼ばれてしまう問題がございました。

ver 1.0.0では、OrbRunnerでのManager::shutdown()呼び出しは行われ
ないようになっておりますので、ver 0.4.2でも、OrbRunnerでの
Manager::shutdown()呼び出しを行わないように修正して頂けますでしょ
うか。

お手数をお掛けしまして申し訳ございません。
宜しくお願い致します。



On Tue, 4 Aug 2009 15:35:13 +0900
Yosuke Matsusaka <yosuke.matsusaka @ aist.go.jp> wrote:

> 産総研の松坂です。
> 
> 現在、OpenRTM-aist ver 0.4.2を使ってnon-blocking modeでマネージャを動作させる
> スタンドアロンコンポーネントを作っているのですが、コンポーネント終了時にCORBA
> エラーが出力されたり、connectorが掃除されずにpublisher側にエラーが出る問題に遭遇
> しています。
> 
> コンポーネントを終了させた後にログを見てみると、
> Aug 04 14:30:45 manager Manager::shutdownORB()
> という行が複数出力されており、おかしいなと思い原因を探ったところ、Manager.hで
> 定義されるクラスOrbRunnerのメンバ関数svcで
> m_pORB->run();
> Manager::instance().shutdown();
> となっている記述を見つけました。
> 
> non-blocking modeでマネージャを動作させるとOrbRunnerがスレッドとして動作すると
> 思うのですが、それをシャットダウンするときに、まず親プロセスのマネージャから
> 関数shutdownComponents内のm_pORB->exit()が呼び出されます。するとm_pORBが終了する
> ことで上記の関数svcに記述された2行目のシャットダウンプロセスがOrbRunnerのスレッド上でも
> 始まってしまい、複数のシャットダウンプロセスが並進することで、不具合が発生しているのでは
> ないかと思います。
> 
> 推測違い or 既知の問題でしたらすいません。
> 
> ver 1.0.0で発生しない問題であれば影響は少ないですが、ver 0.4.2もまだかなり現役だと思います
> ので対処方法を教えてください。
> 
> -- 
> Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
>   Interaction Modeling Group /
>   National Institute of Advanced Industrial Science and Technology (AIST)
>   Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/
> 


-- 
----------
栗原 眞二 <shinji.kurihara @ aist.go.jp>

独立行政法人産業技術総合研究所
  知能システム研究部門 統合知能研究グループ
  〒305-8568
  茨城県つくば市梅園1-1-1 中央第2

  TEL: 029-861-5956



openrtm-users メーリングリストの案内