バグ #1776
get_port_profile()で例外が出るケースがあるがそれをエラーコードにする。
100%
説明
OpenRTM-aist開発者の皆様
株式会社セックの大和田です。
お世話になっております。
OpenRTM-aist-1.0.0-RELEASEの複合コンポーネントの
コンポーネントプロファイル取得について、
ご検討していただきたい点がございます。
複合コンポーネントのコンポーネントプロファイルを、
取得するとき、子コンポーネントが終了していた場合、
複合コンポーネントがアボートします。
コンソールには以下のようなメッセージが表示されます。
Assertion failed: false, file c:\final_build\vc9-4\openrtm-aist\rtm\rtobject.cpp, line 694
具体的には、RTObject_impl::get_component_profile()で、
コンポーネントプロファイルを取得するとき、
ポートプロファイルリストを取得しております。
(RTObject.cppの687行目)
このとき、PortAdmin::getPortProfileList()では、
リストに既に存在していないポートがあった場合、
存在していないポートに対して、PortBase::get_port_profile()
を実行しようとするため、Exceptionが発生し、
コンポーネントがアボートしてしまいます。
(PortAdmin.hの537行目)
複合コンポーネントがアボートせず、何らかのエラーを返すような
実装にしていただくことはできないでしょうか。
関係しているリビジョン
リビジョン 2132
(差分)
リビジョン 2132
(差分)
get_port_profile() are enclosed by try-catch, and they return false now.
refs #1776
リビジョン 2134
(差分)
msi's UpgradeCode has been updated. refs #1776
リビジョン 2134
(差分)
msi's UpgradeCode has been updated. refs #1776
get_port_profile() are enclosed by try-catch, and they return false now.
refs #1776