[openrtm-users 02890] OS X においてマネージャ初期化時に固まる症状
中岡 慎一郎
s.nakaoka @ aist.go.jp
2013年 8月 26日 (月) 22:08:47 JST
産総研の中岡です。
度々すみません、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)を除去しても
らうというのは問題ありますでしょうか?
--
中岡 慎一郎 <s.nakaoka @ aist.go.jp>
産業技術総合研究所 知能システム研究部門
ヒューマノイド研究グループ
Phone: 029-861-5161 Fax: 029-862-6519
More information about the openrtm-users
mailing list