株式会社山武 樋口様
> 以前下記の内容で情報頂きました。
> 大変恐縮ですが、「ECのインスタンスを作成したマシン上で
強引に消去する」方法について
> 具体的な手順をお教えいただけないでしょうか
PortableServerクラスに
referece_to_servant()
というメソッドがあります。
これに消したいECのCORBAリファレンスを
渡すと、ECのServantBaseクラス
ポインタが得られます。
それをdeleteすればECはdestructされます。
> また、上記を行った場合、OpenRTM0.4.2ではバグのためにセ
グメントエラーになるとのことですが、
> どのようなバグがあるのでしょうか?
> もしお分かりになりましたら、合わせてご教示いただけると
幸いです。
これに関しては、記憶が定かではないのですが、
ECが管理している何かのCORBAリファレンスの
RefCountの整合性の問題だったように思います。
もしかしたら記憶違いかもしれません。
記憶があいまいですいません。
(RTCにはこの問題が確実にあります)
バグではないのですが、もう一つ別の問題があります。
生成されたECはManagerが管理しているのですが、
Managerをshutdownするとき、自分が管理している
ECのservantポインタにアクセスします。
ユーザが上記の方法でECの実体を先にdelete
してしまうと,無効なポインタにアクセスする
ことになるので、Segment Errorとなります。
このエラーはManagerをshutdownするときに
しか起きないので、無視してもよいと思うのですが、
RTCやManagerがきれいにshutdownされない
可能性があるので、私としてはおすすめはしません。
清水
静岡大 清水様 & OpenRTMユーザの皆様
お世話になっております。
株式会社山武 樋口と申します。
以前下記の内容で情報頂きました。
大変恐縮ですが、「ECのインスタンスを作成したマシン上で強引に消去する」方法について
具体的な手順をお教えいただけないでしょうか。
また、上記を行った場合、OpenRTM0.4.2ではバグのためにセグメントエラーになるとのことですが、
どのようなバグがあるのでしょうか?
もしお分かりになりましたら、合わせてご教示いただけると幸いです。
以上、よろしくお願いいたします。