[openrtm-users 02893] Re: OS X においてマネージャ初期化時に固まる症状

Ando Noriaki n-ando @ aist.go.jp
2013年 8月 27日 (火) 10:43:24 JST


中岡さん

安藤です

ご指摘ありがとうございます。waitはpcloseに含まれているので、いらないですね。
おそらく、このwaitがNameServiceの子プロセスの終了待ちをしてしまっているため
ブロックしているのだと思います。チケット出して修正しておきます。
http://redmine.openrtm.org/issues/2807

ありがとうございました。


2013年8月26日 22:12 Shin'ichiro Nakaoka <s.nakaoka @ aist.go.jp>:
>
> すみません、訂正です。
>
>> 1.1.0-RELEASEのsrc/lib/coil/posix/coil/Routing.cppにおいて、
>> 108行と107行にある
>>
>> wait(NULL)
>
> は、108行と167行でした。
>
>
> (08/26/13 22:08), 中岡 慎一郎 wrote:
>>
>> 産総研の中岡です。
>>
>> 度々すみません、Mac OS X (Lion) においてマネージャ初期化時に固まるという
>> 不可解な症状に遭遇しましたので、報告させてください。
>>
>> 状況としては、Choreonoidにおいて起動時にRTC::Manager::init()を行なってお
>> り、ある条件下でこの関数が固まります。
>>
>> 固まる箇所をたどっていくと、
>>
>> Manager::initNaming() -
>> NamingManager::registerNameServer()-
>> NamingManager::createNamingObj() -
>> NamingOnCorba::NamingOnCorba() -
>> coil::dest_to_endpoint()
>>
>> ときて、ここから呼ばれる
>> coil::find_dest_ifname() と
>> coil::ifname_to_ipaddr() の関数です。
>>
>> 1.1.0-RELEASEのsrc/lib/coil/posix/coil/Routing.cppにおいて、
>> 108行と107行にある
>>
>> wait(NULL)
>>
>> でブロックしたまま帰ってきていません。
>>
>> ある条件というのは、マネージャの初期化を行なっているプロセスから、
>> マネージャ初期化の前にネームサーバのコマンドを(別プロセスとして)起動し
>> ているということです。同じコマンドをあらかじめ他のプロセスから起動してあ
>> る場合は、問題なく動くのですが…。また、この症状が出るのはOS Xだけで、
>> WindowsやLinuxでは同じ事を行なっても問題なく動いています。
>>
>> そして、OS Xでも上記の2つのwait(NULL)をどちらもコメントアウトすると、固
>> まらなくなり、その後も特に問題なく動いているように見えます。
>>
>> ちなみにネームサーバのコマンドはomniNamesを参考に自前で実装した
>> Choreonoid付属のものです。WindowsやMacではネームサーバがデーモンとして自
>> 動では起動しないのが普通だと思いますが、そのような場合でもChoreonoidを起
>> 動するだけで簡単にシミュレーションを行えるように、この機能をつけています。
>>
>> 以上のような症状なのですが、今後のリリースで上記のwait(NULL)を除去しても
>> らうというのは問題ありますでしょうか?
>>
>
>
> --
> Shin'ichiro Nakaoka <s.nakaoka @ aist.go.jp>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users


More information about the openrtm-users mailing list