[openrtm-users 01178] cleanupComponentで落ちる

3 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 3日 22時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01178] cleanupComponentで落ちる

産総研 安藤様

株式会社セックの大和田です。
お世話になっております。

cleanupComponent()時にコンポーネントが強制終了してしまう
場合がありますので、ご報告させていただきます。
以下、詳細になります。

[現象]
cleanupComponent()でセグメントエラーで強制終了する。

[再現方法]
1. オプションを以下に設定する
"logger.enable" : YES
 "logger.log_level" : TRACE
"manager.naming_formats" : "test.mgr"
"manager.is_master" : YES
"manager.shutdown_auto" : NO
"manager.shutdowwn_onrtcs" : NO
"timer.enable" : YES
2. createComponent()でコンポーネントを生成
3. finalize()でコンポーネントを削除する

[原因]
RTObject_impl::shutdown()が呼ばれると、
m_finalized(Mutexとvectorの構造体)というリストに、
削除対象のインスタンスのポインタがpush_backで登録される。
cleanupComponent()が呼ばれたタイミングでインスタンスを削除するが、
その後、登録したポインタが pop も delete もされていない。

ご確認お願い致します。

以上、宜しくお願い致します

未定義
root
オフライン
Last seen: 3日 22時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01179] cleanupComponentで落ちる

株式会社セック 大和田様

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

> [原因]
> RTObject_impl::shutdown()が呼ばれると、
> m_finalized(Mutexとvectorの構造体)というリストに、
> 削除対象のインスタンスのポインタがpush_backで登録される。
> cleanupComponent()が呼ばれたタイミングでインスタンスを削除するが、
> その後、登録したポインタが pop も delete もされていない。
詳細な調査をして頂き、有難うございます。
この問題に関しましては、早稲田大学の菅様よりご報告頂きましたManager
関連のバグ(メーリングリストの"[openrtm-users 01148])の修正の際に合わせ
て修正させて頂いております。
修正点としましては、Manager::cleanupComponent()の最後に
m_finalized.comps.clear()を追加しました。
なお、登録したポインタのdeleteは、Manager::deleteComponent()内から
呼び出しております、factory->destroy(comp);にて行っております。

Managerクラスにつきましては、他にもいくつか修正箇所がございまして、
メーリングリスト[openrtm-users 01149]で添付されていたパッチにて修正
済みです。
メーリングリスト01149にて添付されていたパッチと同じものを添付させて
頂いております。

お手数ですが、添付のパッチを当てるか、以下から最新のソースをチェック
アウトして頂けますでしょうか。

 http://openrtp.jp/openrtm/svn/OpenRTM-aist/branches/RELENG_1_0/OpenRTM-aist

以上、宜しくお願い致します。

On Wed, 24 Mar 2010 13:10:48 +0900
Tasuku Owada wrote:

> 産総研 安藤様
>
> 株式会社セックの大和田です。
> お世話になっております。
>
> cleanupComponent()時にコンポーネントが強制終了してしまう
> 場合がありますので、ご報告させていただきます。
> 以下、詳細になります。
>
> [現象]
> cleanupComponent()でセグメントエラーで強制終了する。
>
> [再現方法]
> 1. オプションを以下に設定する
> "logger.enable" : YES
>  "logger.log_level" : TRACE
> "manager.naming_formats" : "test.mgr"
> "manager.is_master" : YES
> "manager.shutdown_auto" : NO
> "manager.shutdowwn_onrtcs" : NO
> "timer.enable" : YES
> 2. createComponent()でコンポーネントを生成
> 3. finalize()でコンポーネントを削除する
>
> [原因]
> RTObject_impl::shutdown()が呼ばれると、
> m_finalized(Mutexとvectorの構造体)というリストに、
> 削除対象のインスタンスのポインタがpush_backで登録される。
> cleanupComponent()が呼ばれたタイミングでインスタンスを削除するが、
> その後、登録したポインタが pop も delete もされていない。
>
> ご確認お願い致します。
>
> 以上、宜しくお願い致します
>

root
オフライン
Last seen: 3日 22時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01181] cleanupComponentで落ちる

産総研 栗原様、安藤様

株式会社セックの大和田です。
お世話になっております。

ご回答ありがとうございます。
メーリングリスト[openrtm-users 01149]を確認しておりませんでした。
パッチを当てて確認しましたところ、
cleanupComponent()でセグメントエラーが発生しなくなりました。
お手数をお掛けして申し訳ございません。

以上です

kurihara shinji さんは書きました:
> 株式会社セック 大和田様
>
> お世話になっております。
> 産総研 栗原です。
>
>> [原因]
>> RTObject_impl::shutdown()が呼ばれると、
>> m_finalized(Mutexとvectorの構造体)というリストに、
>> 削除対象のインスタンスのポインタがpush_backで登録される。
>> cleanupComponent()が呼ばれたタイミングでインスタンスを削除するが、
>> その後、登録したポインタが pop も delete もされていない。
> 詳細な調査をして頂き、有難うございます。
> この問題に関しましては、早稲田大学の菅様よりご報告頂きましたManager
> 関連のバグ(メーリングリストの"[openrtm-users 01148])の修正の際に合わせ
> て修正させて頂いております。
> 修正点としましては、Manager::cleanupComponent()の最後に
> m_finalized.comps.clear()を追加しました。
> なお、登録したポインタのdeleteは、Manager::deleteComponent()内から
> 呼び出しております、factory->destroy(comp);にて行っております。
>
> Managerクラスにつきましては、他にもいくつか修正箇所がございまして、
> メーリングリスト[openrtm-users 01149]で添付されていたパッチにて修正
> 済みです。
> メーリングリスト01149にて添付されていたパッチと同じものを添付させて
> 頂いております。
>
> お手数ですが、添付のパッチを当てるか、以下から最新のソースをチェック
> アウトして頂けますでしょうか。
>
>  http://openrtp.jp/openrtm/svn/OpenRTM-aist/branches/RELENG_1_0/OpenRTM-aist
>
>
> 以上、宜しくお願い致します。
>
>
>
> On Wed, 24 Mar 2010 13:10:48 +0900
> Tasuku Owada wrote:
>
>> 産総研 安藤様
>>
>> 株式会社セックの大和田です。
>> お世話になっております。
>>
>> cleanupComponent()時にコンポーネントが強制終了してしまう
>> 場合がありますので、ご報告させていただきます。
>> 以下、詳細になります。
>>
>> [現象]
>> cleanupComponent()でセグメントエラーで強制終了する。
>>
>> [再現方法]
>> 1. オプションを以下に設定する
>> "logger.enable" : YES
>>  "logger.log_level" : TRACE
>> "manager.naming_formats" : "test.mgr"
>> "manager.is_master" : YES
>> "manager.shutdown_auto" : NO
>> "manager.shutdowwn_onrtcs" : NO
>> "timer.enable" : YES
>> 2. createComponent()でコンポーネントを生成
>> 3. finalize()でコンポーネントを削除する
>>
>> [原因]
>> RTObject_impl::shutdown()が呼ばれると、
>> m_finalized(Mutexとvectorの構造体)というリストに、
>> 削除対象のインスタンスのポインタがpush_backで登録される。
>> cleanupComponent()が呼ばれたタイミングでインスタンスを削除するが、
>> その後、登録したポインタが pop も delete もされていない。
>>
>> ご確認お願い致します。
>>
>> 以上、宜しくお願い致します
>>

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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