操作
バグ #4422
完了NamingOnCorbaコンストラクタに渡すORBの参照カウントの問題
開始日:
2018/01/19
期日:
進捗率:
100%
予定工数:
説明
以下のコードについて、参照カウントが1つ多く減る可能性があるため調査する。
NamingBase* NamingManager::createNamingObj(const char* method, const char* name_server) { (省略) CORBA::ORB_var orb = m_manager->getORB(); name = new NamingOnCorba(orb.in(), name_server);
まず上記の部分でgetORB使用のため参照カウントが1つ増加している。
しかしcreateNamingObj関数が終了すると変数orbが削除されて参照カウントが1つ減少します。
このため、この部分だけを見ると差し引き0です。
しかし、NamingOnCorbaコンストラクタで変数m_cosnamingの初期化を行っています。
NamingOnCorba::NamingOnCorba(CORBA::ORB_ptr orb, const char* names) : m_cosnaming(orb, names), m_endpoint(""), m_replaceEndpoint(false)
変数m_cosnamingはCorbaNamingクラスであるため、CorbaNamingのコンストラクタが呼ばれています。
CorbaNaming::CorbaNaming(CORBA::ORB_ptr orb, const char* name_server) : m_varORB(orb), m_nameServer(name_server),
m_varORBはCORBA::ORB_var型の変数です。この変数が削除されると参照カウントが減ります。
おそらく参照カウントを1つしか増やしていないのに2つ減っています。
操作