[openrtm-users 01476] Re: rtc_handle for OpenrtM-aist-1.0.0 (ほぼ完成か?)

Ando Noriaki n-ando @ aist.go.jp
2010年 11月 11日 (木) 01:27:09 JST


原様

安藤です

> 安藤さん、末廣さん:
>
> 原@産総研です。下記のような実装では、メモリーリークにつながっているということはないでしょうか?
> 数回、接続、切断を繰り返しているとコンポーネントが死ぬということは、どこかで余計なメモリ開放
> が行われているのではないでしょうか?
> だとすると、残っているメモリもあると思われます。

1.0をリリースするときに行ったメモリリークテストでは、データポート
サービスポートともにメモリリークは発見されていませんので、
(仕様に従って呼び出している限りは)たぶん大丈夫だと思います。
ちなみに、メモリリークテストでは、rtc_handleをこちらで1.0用にアップデート
したものを使用しておりました。接続プロファイルの作成の仕方は
以下の仕様に従って行っておりました。

> もう一度、ソースコードを見直して、シンプルにできないでしょうか。

PortBaseは特別複雑なコードになっているようには見えないのですが、
具体的にどの辺が複雑なのかご指摘いただければ検討したいと思います。
PortBaseクラスの見かたとしては、protectedのメンバー関数の多くが
template methodパターンのメソッドとなっているものとして見ていくと
振る舞いをとらえやすいと思います。

> 私は、現在、RtORBでいろいろ試しているのですが、データポートのIn->Outで接続を行うときと
> Out->Inで接続を行うときの振舞が違います。サービスポートでも同じように、接続の振舞が違うようです。
>
> RTCの生成、ポートの接続に関して、動のような動作が正常であるのかが分かる文書があればよいのですが、、、

OMG RTCの仕様ではどういう接続がnormativeであるかといったことは
詳しくは規定されていませんが、PortProfile.ports に格納されているポートに
対してnotify_connectを次々呼んでConnectorProfileを伝搬させるというふうに書いてあります。
参照:OMG RTC formal/08-04-04 p.75
http://www.omg.org/spec/RTC/1.0/

例としてport参照の配列に格納された順にnotify_connect()をカスケード上に
呼び出すというシーケンス図が示されています。ちなみに、OpenRTMでは
この図の通りの実装になっています。
もう少し詳細な仕様については以下のようになっています。
http://www.openrtm.org/OpenRTM-aist/documents/current/cxx/classreference_ja/classRTC_1_1PortBase.html#a139d07d2e94f7e793aedf4aa24b92462

データポートもサービスポートもこの実装に従って実装されているはず?です。

InPortからOutPortへの接続とOutPortからInPortへの接続で振る舞いが
違うというのは、SystemEditor側でどういうConnectorProfileをどのポートに
与えるかに依存するので、両社で異なるConnectorProfileを作っていて、
かつどちらのポートにそれを渡すかによって違ってきます。

OpenRTMのポート自体は、仕様を満たすConnectorProfileを与えられたら
その通りに動作するだけです。

> それから、MLで流れた修正などが、オフィシャルのホームページに見当たりませんが、パッチと修正点を
> 載せて頂けないでしょうか?
>
> できれば、オフィシャルでダウンロードできるのは、最新で安定している方がよいと思います。
> ご検討下さい。

了解しました。パッチなどはできるだけアップするようにしたいと思います。

以上、よろしくお願いいたします。

> On 2010/11/10, at 6:46, takashi suehiro wrote:
>
>> 安藤様,
>>
>> 末廣です.
>> 今,個人PCが故障中でgmailから出しているので私のメールは
>> メーリングリストには流れていないと思います.
>> 前のメールは安藤さんのreplyのおかげで流れたことになるのかな.
>> ありがとうございます.
>>
>> で,原因ですが,
>> 0.4xではconnectorは仮想的なもので,ある意味実体がなかったのですが
>> Connector が1.0.0では実体を持つようになったためdisconnectすると
>> それが開放されてしまうことが分かりました.いったんdisconnectした
>> connector_idを再利用すると接続ができないことがあります.
>> またうまくいっているようでも,古いconnector_idを使って何度も
>> 接続,切断を繰り返しているとコンポーネント本体が死ぬこともあるようです.
>> そういうゴミ接続ができると,他のツール(rtcshellなど)を使って
>> 接続,切断を繰り返していてもコンポーネントが死にます.
>>
>> そこで対策としてconnectするときに常に新しいConnectorを生成し、
>> 情報を更新するようにしました。
>> 今のところうまくいっているように見えます.
>>
>> 2010年11月10日2:46 Ando Noriaki <n-ando @ aist.go.jp>:
>>> 末廣先生
>>>
>>> 安藤です
>>>
>>>> 皆様,
>>>>
>>>> 末廣@電通大です.
>>>> rtc_handle for OpenRTM-aist-1.0.0が安定してきたのでご報告します.
>>>>
>>>> これまでポートの接続,切断,再接続などの処理が安定しなかった問題を解決しました.
>>>> <http://www.taka.is.uec.ac.jp/~suehiro/rtm1.0.0/>に置いてあります.
>>>> 0.4.2版からの注意点も簡単に記述してありますので参考にしてください.
>>>>
>>>> もしご興味があれば使ってみて下さい.
>>>
>>> アナウンスありがとうございます。
>>> 参考のために、接続が安定しなかった原因と、どのような変更によって
>>> 安定するようになったのかを教えていただけないでしょうか?
>>> よろしくお願いいたします。
>>>
>>> --
>>> 安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
>>>    統合知能研究グループ 主任研究員, 博士(工学)
>>>    〒305-8568 つくば市梅園1-1-1 中央第2
>>>    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
>>>    OpenRTM-aist: http://www.openrtm.org
>>>
>>>
>>
>>
>>
>> --
>> from suehiro.t @ gmail
>> 返信は、suehiro @ is.uec.ac.jpにお願いします。
>>
>>
>
>
> ------------------------------------------------------------
> 産業技術総合研究所   知能システム研究部門 インタラクションモデリングG
> 主任研究員 原  功 <Isao-Hara @ aist.go.jp>
> Isao HARA, Senior Researcher, ISRI, ,AIST,Japan
> TEL: +81-29-861-5973       FAX: +81-29-862-6631
>
>
>
>
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



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