[openrtm-users 00882] OpenRTM 1.0.0-RC1の不具合について

3 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 1日 2時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00882] OpenRTM 1.0.0-RC1の不具合について

OpenRTM-aist開発者各位

セックの坂口です。
お世話になっております。

OpenRTM 1.0.0-RC1において、以下の不具合が見受けられましたので、
ご報告いたします。

1.PortBase継承クラスの利用時にメモリリーク
2.ポートの切断時の不具合

以下、詳細です。
----

1.PortBase継承クラスの利用時にメモリリーク
メモリリークは、PortBaseを継承したクラス(CorbaPortなど)利用時に
発生します。具体的には、PortBaseを継承したクラスのオブジェクトを
宣言し、オブジェクトのスコープを抜けても、そのオブジェクトのメモリが
解放されていないようです。

2.ポートの切断時の不具合
本不具合は、2点あります。

(1)InPortのConnectorProfileが残る
InPortを持つRTCと、OutPortを持つRTCを起動し、RtSystemEditorにより
ポートの接続を行い、OutPortを持つRTCを不正終了させた後、再起動して
再度ポート接続を行います。不正終了とは、右上の×ボタンの押下です。
このとき、InPortのConnectorProfileは最初に接続したときの情報が
残ってしまいます。

(2)write()呼び出しにより例外が発生
上記2RTCのポート接続をRtSystemEditorではなく、他アプリで
行います。このとき、ConnectorProfileのportsにはInPort、OutPortの
順に情報を代入し、connect()を実行します。
そして、InPortを持つRTCを不正終了させ、OutPortのwrite()メソッドを
呼び出すとCORBA::Exceptionが返されます。

ポート切断処理は、ポートの情報がConnectorProfileのportsに登録された
順番で行われます。InPortを持つRTCが不正終了し、write()の呼び出しに
失敗したとき、disconnect()が呼ばれます。このとき、OutPortにおいて、
ConnectorProfileのportsにInPortの情報があった場合、CORBA通信が発生
し、参照できないために例外が発生するものと思われます。

以上です。ご確認お願いいたします。

未定義
root
オフライン
Last seen: 1日 2時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00884] OpenRTM 1.0.0-RC1の不具合について

坂口様

産総研 安藤です

ご報告ありがとうございました。

とりあえず、以下のパッチで1.と2.(2)については
対処可能かと思います。お試しいただけないでしょうか?

2.(1)については、現在のところInPortおよびサービスポートは
相手のポートの生死を判断して、自動的にdisconnectする
仕組みが備わっておらず、そういう仕様になっております。

InPortに関しては、何らかの方法でそうした仕組みを
導入したいと考えています。RELEASE版には入ると思います。

サービスポートに関しては、、、、難しそうですね。
何かいいアイディアがございましたら教えていただけませんか?

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

2009/07/30 23:04 に Tomoya Sakaguchi さんは書きました:
> OpenRTM-aist開発者各位
>
> セックの坂口です。
> お世話になっております。
>
> OpenRTM 1.0.0-RC1において、以下の不具合が見受けられましたので、
> ご報告いたします。
>
> 1.PortBase継承クラスの利用時にメモリリーク
> 2.ポートの切断時の不具合
>
> 以下、詳細です。
> ----
>
> 1.PortBase継承クラスの利用時にメモリリーク
> メモリリークは、PortBaseを継承したクラス(CorbaPortなど)利用時に
> 発生します。具体的には、PortBaseを継承したクラスのオブジェクトを
> 宣言し、オブジェクトのスコープを抜けても、そのオブジェクトのメモリが
> 解放されていないようです。
>
> 2.ポートの切断時の不具合
> 本不具合は、2点あります。
>
> (1)InPortのConnectorProfileが残る
> InPortを持つRTCと、OutPortを持つRTCを起動し、RtSystemEditorにより
> ポートの接続を行い、OutPortを持つRTCを不正終了させた後、再起動して
> 再度ポート接続を行います。不正終了とは、右上の×ボタンの押下です。
> このとき、InPortのConnectorProfileは最初に接続したときの情報が
> 残ってしまいます。
>
> (2)write()呼び出しにより例外が発生
> 上記2RTCのポート接続をRtSystemEditorではなく、他アプリで
> 行います。このとき、ConnectorProfileのportsにはInPort、OutPortの
> 順に情報を代入し、connect()を実行します。
> そして、InPortを持つRTCを不正終了させ、OutPortのwrite()メソッドを
> 呼び出すとCORBA::Exceptionが返されます。
>
> ポート切断処理は、ポートの情報がConnectorProfileのportsに登録された
> 順番で行われます。InPortを持つRTCが不正終了し、write()の呼び出しに
> 失敗したとき、disconnect()が呼ばれます。このとき、OutPortにおいて、
> ConnectorProfileのportsにInPortの情報があった場合、CORBA通信が発生
> し、参照できないために例外が発生するものと思われます。
>
> 以上です。ご確認お願いいたします。
>

root
オフライン
Last seen: 1日 2時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00897] OpenRTM 1.0.0-RC1の不具合について

産総研 安藤様

セックの坂口です。
お世話になっております。

返事が大変遅くなり申し訳ありません。

今回の不具合について、早急な対応ありがとうございます。
お送りいただいたパッチですが、試してみます。

以上です。

Ando Noriaki さんは書きました:
> 坂口様
>
> 産総研 安藤です
>
> ご報告ありがとうございました。
>
> とりあえず、以下のパッチで1.と2.(2)については
> 対処可能かと思います。お試しいただけないでしょうか?
>
> 2.(1)については、現在のところInPortおよびサービスポートは
> 相手のポートの生死を判断して、自動的にdisconnectする
> 仕組みが備わっておらず、そういう仕様になっております。
>
> InPortに関しては、何らかの方法でそうした仕組みを
> 導入したいと考えています。RELEASE版には入ると思います。
>
> サービスポートに関しては、、、、難しそうですね。
> 何かいいアイディアがございましたら教えていただけませんか?
>
>
> 以上、よろしくお願いいたします。
>
>
>
>
>
> 2009/07/30 23:04 に Tomoya Sakaguchi さんは書きました:
>> OpenRTM-aist開発者各位
>>
>> セックの坂口です。
>> お世話になっております。
>>
>> OpenRTM 1.0.0-RC1において、以下の不具合が見受けられましたので、
>> ご報告いたします。
>>
>> 1.PortBase継承クラスの利用時にメモリリーク
>> 2.ポートの切断時の不具合
>>
>> 以下、詳細です。
>> ----
>>
>> 1.PortBase継承クラスの利用時にメモリリーク
>> メモリリークは、PortBaseを継承したクラス(CorbaPortなど)利用時に
>> 発生します。具体的には、PortBaseを継承したクラスのオブジェクトを
>> 宣言し、オブジェクトのスコープを抜けても、そのオブジェクトのメモリが
>> 解放されていないようです。
>>
>> 2.ポートの切断時の不具合
>> 本不具合は、2点あります。
>>
>> (1)InPortのConnectorProfileが残る
>> InPortを持つRTCと、OutPortを持つRTCを起動し、RtSystemEditorにより
>> ポートの接続を行い、OutPortを持つRTCを不正終了させた後、再起動して
>> 再度ポート接続を行います。不正終了とは、右上の×ボタンの押下です。
>> このとき、InPortのConnectorProfileは最初に接続したときの情報が
>> 残ってしまいます。
>>
>> (2)write()呼び出しにより例外が発生
>> 上記2RTCのポート接続をRtSystemEditorではなく、他アプリで
>> 行います。このとき、ConnectorProfileのportsにはInPort、OutPortの
>> 順に情報を代入し、connect()を実行します。
>> そして、InPortを持つRTCを不正終了させ、OutPortのwrite()メソッドを
>> 呼び出すとCORBA::Exceptionが返されます。
>>
>> ポート切断処理は、ポートの情報がConnectorProfileのportsに登録された
>> 順番で行われます。InPortを持つRTCが不正終了し、write()の呼び出しに
>> 失敗したとき、disconnect()が呼ばれます。このとき、OutPortにおいて、
>> ConnectorProfileのportsにInPortの情報があった場合、CORBA通信が発生
>> し、参照できないために例外が発生するものと思われます。
>>
>> 以上です。ご確認お願いいたします。
>>

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク