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

服部静子 s.hattori @ aist.go.jp
2013年 3月 28日 (木) 11:39:10 JST


産総研の服部です。

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()が実行され、そこで致命的なエラーを起こします。

コンポーネントを削除する手順が間違っているのでしょうか?アドバイスをお願いします。


More information about the openrtm-users mailing list