プロジェクト

全般

プロフィール

バグ #2137

ComponentObserver付きのRTCで2つのRTSEから操作すると有るケースで落ちる

n-andoほぼ13年前に追加. ほぼ9年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
-
開始日:
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がセグメンテーションフォールトで落ちる。

関係しているリビジョン

リビジョン 2127 (差分)
n-andoほぼ13年前に追加

ListenersHolder's listener list are now guarded by mutex. refs #2137

リビジョン 2127 (差分)
n-andoほぼ13年前に追加

ListenersHolder's listener list are now guarded by mutex. refs #2137

リビジョン 2128 (差分)
n-andoほぼ13年前に追加

Some debug prints have been added to debug refs #2137 issue.
Mutex guard's position has been changed. But the bug is not fixed.

リビジョン 2128 (差分)
n-andoほぼ13年前に追加

Some debug prints have been added to debug refs #2137 issue.
Mutex guard's position has been changed. But the bug is not fixed.

履歴

#1 n-andoほぼ13年前に更新

  • 対象バージョンRELEASE_1_1_0 にセット
  • 進捗率0 から 30 に変更

ListenerのHolderをmutexで保護。

#2 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);
            }
        }
    }

#3 n-andoほぼ13年前に更新

  • ステータス新規 から 終了 に変更
  • 進捗率50 から 100 に変更

SdoServiceConsumerBase classでvirtual dtorが宣言されてなかったため、具象クラスのデストラクタが呼ばれていなかった。このため、メモリリークおよびタイマなどのオブジェクトが生き続けていたため、落ちていたものと思われる。

#4 n-andoほぼ9年前に更新

  • 対象バージョン を削除 (RELEASE_1_1_0)

他の形式にエクスポート: Atom PDF