[openrtm-users 01582] Re: name service view にモジュールが表示されない

Masayuki Shimizu masayuki.shimizu @ aist.go.jp
2011年 2月 16日 (水) 22:06:20 JST


佐藤様

静岡大の清水です。

役に立たないかもしれませんが、少し調べてみました。

> omniORB: ERROR -- A servant has been deleted that is
> still activated.

このメッセージがどういう時に出るのかomniORBの
ソースをgrepしました。

omniServant::~omniServant();
の中にこのメッセージがあります。
メッセージは、もしこのサーバントが具現化した
オブジェクトがまだ存在してれば、出るようです。

ということは、omniServantをデストラクトしている
処理がどこかで起こっていることになります。

omniServant <- ServantBase <- RefCountServantBase
という継承関係があるので、
RefCountServantBaseをデストラクトしている処理を
探せば良さそうです。

OpenRTM-aistでは、RefCountServantBaseを継承しているのは
、以下のクラスのようです(grep結果)
・CorbaPort
・ExecutionContextBase
・InPortCorbaCdrProvider
・ManagerServant
・OutPortCorbaCdrProvider
・PortBase
・RTObject_impl
・SdoConfiguration
・SdoOrganization

なので、この内のどれかのデストラクタが呼ばれている
ことになりますね。
どれが呼ばれているかは、RTMのログ等で解析できそうな
気がしますので、やってみてはどうでしょうか?

# もしかしたら、デストラクト処理はログに出ないかも
しれません。その場合は、自力で調べるしかないですね。

清水
--- Shunji Satoh <shun @ is.uec.ac.jp> wrote:

> 電気通信大学大学院の佐藤と申します.
> 
> 複数台のホストに OpenRTM-aist-1.0.0
> をインストールし,ネットワーク越しのコンポーネント接続
> を試みておりますが,特定のホストの組み合わせで「name
> service view に表示されない」「途中で
> コンポーネントが異常終了する」問題が発生します.
> 用いたコンポーネントは example フォルダの
> USBCameraMonitorComp.exe と
> USBCameraAquireComp.exe
> です.解決方法など教えていただければ幸いです.
> 
> *** やろうとしていること***
> ・hostAに接続されたUSBカメラの映像を(Windows 7
> Professional, 64bit),
> ・hostBで表示する(Windows XP SP3, 32bit)
> ことを試みており,以下の作業を行いましたが期待した結果
が得られません.ただ,全く動作しない
> のではなく,10秒ほどうまく表示される場合もあり,数日悩
んでおります.具体的には以下の通りです.
> 
> -----
> ・hostA (USBカメラ付き)にて
> 1.name server 起動
> 2.example/USBCameraAquireComp.exe を実行.
> 
> ・hostB (モニタ用)にて
> 3.example/rtc.conf を corba.nameservers hostA
> のように修正し,
> 4.example/USBCameraMonitorComp.exe を実行し,hostA
> の name server に登録.
> 5.RT System Editor の name service view にて hostA
> を追加するが,host A のIP アドレスだけ
> が表示されており,上記の2.と4.で実行したコンポーネン
トが
> **表示されない**(ゾンビでもない)
> 
> しかし,
> ・hostA に戻って,
> 6.host A の RT System Editor の name service view
> では,上記2.と4.が登録されている事が
> 確認できる.
> 7.(コンポーネントが見えている)host A の RT System
> Editor にて,USBCameraMonitor0 と
> USBCameraAquire0 を結合し,Activate すると
> **期待通りに表示された** と思いきや,
> 8.10秒ほどすると,host B の USBCameraMonitor0
> がフリーズする.その時のメッセージ:
> omniORB: ERROR -- A servant has been deleted that is
> still activated. id root<4>
> (deactivating)
> -----
> 
> 10秒ほどではありますが,一応実行されているので,ファイ
アウォールの問題ではないと推測してい
> ました.が,しかし,
> 
> 上で述べた hostA(カメラ)と
> hostB(モニタ)の関係を逆にすると,
> http://www.openrtm.org/openrtm/ja/node/1190 の,
> 「コンポーネントは起動しているはずなのにゾンビオブジェ
クトとして表示される」が発生します.
> 具体的には,前述の1〜8.の hostA  と hostB
> の関係を入れ替えて,
> 9.hostA の USBCameraMonitorComp.exe を hostB の
> name server に登録すべく実行するも,
> 10.hostB の name service view では
> 9.がゾンビオブジェクトとして表示されている.
> 
> となります.試したことなどは以下の通りです.
> ・両 host からの ping → 通る
> ・両 host のファイアウォールを無効にする
> → 状況変わらず
> ・anti-virus ソフトを停止する,アンインストールする
> → 状況変わらず
> ・OSが原因かと思い,hostA にかわって,hostC(Windows
> 7 Professional 32bit)に置き換える→う
> まくいく.
> 
> 
> 皆様からのアドバイスを頂戴できれば幸いです.
> 以上です.
> 
> 
> 
> 
> 
> 
> 




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