操作
バグ #2137
完了ComponentObserver付きのRTCで2つのRTSEから操作すると有るケースで落ちる
開始日:
2011/05/24
期日:
進捗率:
100%
予定工数:
説明
栗原です。
ComponentObserverのテストで以下のような問題がでましたので、
報告致します。
RTM側の問題なのか、ツール側の問題なのかまでは調査できてません。
使用しているRTSEは、rtmtoolsのリビジョン177です。
http://www.openrtm.org/pub/OpenRTM-aist/ROBOMEC2011/eclipse342_rtmtools110release_win32_ja.zip
からダウンロードできます。
症状としましては、RTSEを2つ起動し、一つのRTCをそれぞれのRTSEの
システムダイアログにDnD後に、最初にDnDした方の、システムダイアグラム
上のRTCを削除し、その後、ネームサービスビュー上のRTCをクリックすると
RTCはセグメンテーションフォールトで異常終了します。
なお、使用したRTCは、ConsoleOutです。
1. RTSE1のネームサービスビューからシステムダイアグラムにRTCをDnD.
2. RTSE2のネームサービスビューからシステムダイアグラムにRTCをDnD.
3. RTSE1のシステムダウアグラム上のRTCをDeleteボタンにて削除
4. RTSE1のネームサービスビュー上のRTCをクリック。 ここで、RTCがセグメンテーションフォールトで落ちる。
n-ando さんが13年以上前に更新
- 進捗率 を 30 から 50 に変更
SdoServiceAdmin内の
- addSdoServiceConsumer
- removeSdoServiceConsumer
内で落ちていることが判明。
Guradの位置をいくつか変えると、Segmentation Faultの頻度は減ったものの、まだ落ちることが有る。
addSdoServiceの場合以下の場所で落ちているようである。
{ // re-initialization std::string id(sProfile.id); for (size_t i(0); i < m_consumers.size(); ++i) { if (id == static_cast<const char*>(m_consumers[i]->getProfile().id)) { RTC_INFO(("Existing consumer is reinitilized.")); RTC_DEBUG(("Propeteis are: %s", NVUtil::toString(sProfile.properties).c_str())); return m_consumers[i]->reinit(sProfile); } } }
操作