プロジェクト

全般

プロフィール

バグ #1181

完了

OpenRTM-aist(C++)-1.0.0-RELEASE版でメモリーリークが発生する

匿名ユーザー さんがほぼ15年前に追加. ほぼ15年前に更新.

ステータス:
終了
優先度:
通常
担当者:
-
対象バージョン:
-
開始日:
2010/01/28
期日:
進捗率:

100%

予定工数:

説明

DataPort.idlで定義されているオペレーションget()を実行するとメモリーリークが発生する。
「DataflowType: pull」で接続した場合に、get()が呼ばれる。

examples/tests/DataPortTest.py の動作テストによりメモリーリークを確認した。

匿名ユーザー さんがほぼ15年前に更新

  • ステータス新規 から 解決 に変更
  • 進捗率0 から 100 に変更

「DataflowType: pull」接続におけるメモリーリークの原因は、
OutPortPullConnector、InPortPullConnector のdisconnect() で、
m_provider、m_buffer、m_consumer などを削除していなかった為である。

・OutPortPullConnector::disconnect()に以下を追加。
// delete provider
if (m_provider != 0) {
OutPortProviderFactory& cfactory(OutPortProviderFactory::instance());
cfactory.deleteObject(m_provider);
}
m_provider = 0;

// delete buffer
if (m_buffer != 0) {
CdrBufferFactory& bfactory(CdrBufferFactory::instance());
bfactory.deleteObject(m_buffer);
}
m_buffer = 0;

・InPortPullConnector::disconnect()に以下を追加。
// delete consumer
if (m_consumer != 0) {
OutPortConsumerFactory& cfactory(OutPortConsumerFactory::instance());
cfactory.deleteObject(m_consumer);
}
m_consumer = 0;

この改修により、継続的なメモリーリークの発生はなくなった。

リビジョン 1891 にて対処。
以上

n-ando さんがほぼ15年前に更新

  • ステータス解決 から 終了 に変更

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