[openrtm-users 02772] deleteComponentで致命的なエラー

5 個の投稿 / 0 new
最終投稿
服部静子
オフライン
Last seen: なし 前
登録日: 2013-03-28 12:00
[openrtm-users 02772] deleteComponentで致命的なエラー

産総研の服部です。

RTC::Managerで、createComponentしたコンポーネントをdeleteComponetすると、
Windowsの致命的なエラーが発生してしまいます。

具体的には、
Windows7環境で、OpenRTM-aist-1.1.0-RELEASE-win32.zipをダウンロードしてVC++10でビルドしました。
ConsoleOutComp.cppのコードを

int main (int argc, char** argv)
{
 ...................

// run the manager in blocking mode
// runManager(false) is the default.
//manager->runManager();

// If you want to run the manager in non-blocking mode, do like this
manager->runManager(true);

manager->deleteComponent("ConsoleOut0");

return 0;
}

のように変更して、実行するとエラーが起きます。

DebugモードにしてdeleteComponentを追いかけてみたところ、Componentを削除した後、managerのshutdownが呼ばれ、
shutdownNaming()が実行されたときに、

omniORB: ERROR -- A servant has been deleted that is still activated.
id: root<0> (active)
omniORB: Assertion failed. This indicates a bug in the application
using omniORB, or maybe in omniORB itself.
file: omniServant.cc
line: 223
info: activation_found

というエラーが表示されます。その後、再度shutdownNaming()が実行され、そこで致命的なエラーを起こします。

コンポーネントを削除する手順が間違っているのでしょうか?アドバイスをお願いします。
_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

未定義
Ando Noriaki
オフライン
Last seen: 1年 9ヶ月 前
登録日: 2011-09-04 17:20
[openrtm-users 02775] deleteComponentで致命的なエラー

服部さま安藤ですコンポーネントは削除する前に終了してあげる必要があります。manager->getComponent("ConsoleIn0")->exit();manager->join();
で試してみていただけないでしょうか?rtc.confのmanager.shutdown_on_no_rtcs:YES を設定する必要があるかもしれません。詳しくはwebページのrtc.confのドキュメントもご覧ください。いま、出先なのでスペルミスなど細かいところで間違いがあったらすみません。2013年3月28日木曜日 服部静子 s.hattori@aist.go.jp:

産総研の服部です。

RTC::Managerで、createComponentしたコンポーネントをdeleteComponetすると、
Windowsの致命的なエラーが発生してしまいます。

具体的には、
Windows7環境で、OpenRTM-aist-1.1.0-RELEASE-win32.zipをダウンロードしてVC++10でビルドしました。
ConsoleOutComp.cppのコードを

int main (int argc, char** argv)
{
  ...................

  // run the manager in blocking mode
  // runManager(false) is the default.
  //manager->runManager();

  // If you want to run the manager in non-blocking mode, do like this
   manager->runManager(true);

   manager->deleteComponent("ConsoleOut0");

  return 0;
}

のように変更して、実行するとエラーが起きます。

DebugモードにしてdeleteComponentを追いかけてみたところ、Componentを削除した後、managerのshutdownが呼ばれ、
shutdownNaming()が実行されたときに、

omniORB: ERROR -- A servant has been deleted that is still activated.
      id: root<0> (active)
omniORB: Assertion failed.  This indicates a bug in the application
using omniORB, or maybe in omniORB itself.
 file: omniServant.cc
 line: 223
 info: activation_found

というエラーが表示されます。その後、再度shutdownNaming()が実行され、そこで致命的なエラーを起こします。

コンポーネントを削除する手順が間違っているのでしょうか?アドバイスをお願いします。
_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

-- 安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門    統合知能研究グループ 主任研究員, 博士(工学)    〒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.orgNoriaki Ando, Ph.D.    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando@aist.go.jp, web: http://staff.aist.go.jp/n-ando    OpenRTM-aist: http://www.openrtm.org

服部静子
オフライン
Last seen: なし 前
登録日: 2013-03-28 12:00
[openrtm-users 02776] deleteComponentで致命的なエラー

安藤さま

お忙しいところ、ご対応ありがとうございます。
服部です。

On Thu, 28 Mar 2013 16:08:40 +0900, Ando Noriaki wrote:
> コンポーネントは削除する前に終了してあげる必要があります。
>
> manager->getComponent("ConsoleIn0")->exit();
> manager->join();
>
> で試してみていただけないでしょうか?
> rtc.confのmanager.shutdown_on_no_rtcs:YES
> を設定する必要があるかもしれません。詳しくはwebページのrtc.confのドキュメントもご覧ください。
> いま、出先なのでスペルミスなど細かいところで間違いがあったらすみません。

上記のコードを試してみました。
manager->join();
を実行すると、そこで処理がとまってしまいます。
manager->getComponent("ConsoleIn0")->exit();
だけにしたところ、うまくいきました。
(rtc.confのmanager.shutdown_on_no_rtcs:YES
はデフォルト値がYESなので、特に設定しなくてもいいようです。)

manager->join();
はなくても大丈夫なのでしょうか。
それと、
manager.shutdown_on_no_rtcs:NOの設定にしたり、
コンポーネントを二つ作成した後に1つだけ削除したりして、
コンポーネントを削除した後に、Managerのshutdownを行わないと、やはりエラーが起きるようなのですが、
これに対処する方法はありますか。

_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

服部静子
オフライン
Last seen: なし 前
登録日: 2013-03-28 12:00
[openrtm-users 02778] deleteComponentで致命的なエラー

服部です。

本件解決しました。
manager->getComponent("ConsoleIn0")->exit();
だけで、deleteComponentまで実行されるのですね。

manager.shutdown_on_no_rtcs:NO
manager.shutdown_auto: NO

と設定しておけば、managerのshutdownが実行されず、
再度createComponentできることも確認しました。

これで、コンポーネントの作成、削除を繰り返し行えそうです。

ありがとうございました。
_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

Ando Noriaki
オフライン
Last seen: 1年 9ヶ月 前
登録日: 2011-09-04 17:20
[openrtm-users 02779] deleteComponentで致命的なエラー

服部さま

安藤です

お返事しようと思っていましたが、自己解決されたようですね。すみません。

> 服部です。
>
> 本件解決しました。
>
> manager->getComponent("ConsoleIn0")->exit();
> だけで、deleteComponentまで実行されるのですね。

その通りです。exitすると、コンポーネント自身がManagerにより
削除されます。このとき、マネージャ=プロセスも終了させたいばあい、
manager.shutdown_on_no_rtcs:YES
manager.shutdown_auto: YES
でプロセス自体も終了されます。この設定はスタンドアロンなコンポーネント
のために設けてあります。
すみません、説明不足でした。

>
> manager.shutdown_on_no_rtcs:NO
> manager.shutdown_auto: NO
>
> と設定しておけば、managerのshutdownが実行されず、
> 再度createComponentできることも確認しました。
>
> これで、コンポーネントの作成、削除を繰り返し行えそうです。
>
> ありがとうございました。
>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users@openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users

--
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
統合知能研究グループ 主任研究員, 博士(工学)
〒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

Noriaki Ando, Ph.D.
Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
e-mail: n-ando@aist.go.jp, web: http://staff.aist.go.jp/n-ando
OpenRTM-aist: http://www.openrtm.org
_______________________________________________
openrtm-users mailing list
openrtm-users@openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-users

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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