<div dir="ltr">金広様<div><br></div><div>安藤です</div><div><br></div><div>direct で落ちるバグを修正したものを r2757 として trunk にコミットしました。</div><div><br></div><div><br></div><div class="gmail_extra"><div></div>
<br><div class="gmail_quote">2016年7月13日 12:43 宮本信彦 <span dir="ltr"><<a href="mailto:n-miyamoto@aist.go.jp" target="_blank">n-miyamoto@aist.go.jp</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="JA" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:10.5pt">安藤様<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">宮本です。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">direct</span><span style="font-size:10.5pt">接続したときに発生する不具合ですが、原因を特定できたのでご報告します。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">まず原因箇所は<span lang="EN-US">OutPortBase</span>クラスの<span lang="EN-US">getLocalInPort</span>関数の以下の部分でした。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">CORBA::ORB_var orb = RTC::Manager::instance().getORB();<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">PortableServer::POA_var poa = RTC::Manager::instance().getPOA();<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">この部分を以下のように修正したら不具合は発生しなくなりました。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">CORBA::ORB_var orb = CORBA::ORB::_duplicate(RTC::Manager::instance().getORB());<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">PortableServer::POA_var poa = PortableServer::POA::_duplicate(RTC::Manager::instance().getPOA());<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">修正前のように<span lang="EN-US">getORB</span>関数で取得したポインタをそのまま渡してしまうと、<span lang="EN-US">ORB_var</span>のデストラクタで<span lang="EN-US">CORBA::release</span>関数を呼び出してリファレンスカウントが<span lang="EN-US">1</span>つ減ります。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">つまり<span lang="EN-US">getLocalInPort</span>関数を呼び出すたびにリファレンスカウントが減ってしまうのが原因なので、<span lang="EN-US">_duplicate</span>関数でリファレンスカウントを増やしてやれば不具合はなくなるはずです。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">ソースコードを読んだ結果、以下の部分にも同様の記述があったので修正する必要があると思います。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">・<span lang="EN-US">CORBA_SeqUtil.cpp</span>の<span lang="EN-US">refToVstring</span>関数<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">・<span lang="EN-US">CorbaNaming</span>クラスのコンストラクタ<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">以上です。<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt">--------------------------------------------------<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">宮本 信彦 <span lang="EN-US"><a href="mailto:n-miyamoto@aist.go.jp" target="_blank">n-miyamoto@aist.go.jp</a><u></u><u></u></span></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">産業技術総合研究所 ロボットイノベーション研究センター<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">ロボットソフトウェアプラットフォーム研究チーム<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt">テクニカルスタッフ<span lang="EN-US"><u></u><u></u></span></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Yu Gothic""><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Yu Gothic""><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">
</span><span style="font-size:11.0pt">安藤慶昭</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">
<br>
<b>Sent:</b> Tuesday, July 12, 2016 1:09 PM<br>
<b>To:</b> </span><span style="font-size:11.0pt">金広文男</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <<a href="mailto:f-kanehiro@aist.go.jp" target="_blank">f-kanehiro@aist.go.jp</a>>;
</span><span style="font-size:11.0pt">宮本信彦</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <<a href="mailto:n-miyamoto@aist.go.jp" target="_blank">n-miyamoto@aist.go.jp</a>><br>
<b>Cc:</b> openrtm-staff <<a href="mailto:openrtm-staff@openrtm.org" target="_blank">openrtm-staff@openrtm.org</a>><br>
<b>Subject:</b> Re: direct</span><span style="font-size:11.0pt">モード</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"><u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<div>
<p class="MsoNormal">宮本さま<span lang="EN-US"><u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal">安藤です<span lang="EN-US"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal">たびたびすみません、本件ちょっと調査してみていただけないでしょうか?<span lang="EN-US"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal">よろしくお願いいたします。<span lang="EN-US"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US">2016-07-08 19:32 GMT+09:00 </span>金広文男<span lang="EN-US"> <<a href="mailto:f-kanehiro@aist.go.jp" target="_blank">f-kanehiro@aist.go.jp</a>>:<u></u><u></u></span></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0mm 0mm 0mm 6.0pt;margin-left:4.8pt;margin-right:0mm">
<p class="MsoNormal" style="margin-bottom:12.0pt">安藤様、<span lang="EN-US"><br>
<br>
</span>金広文男です。<span lang="EN-US"><br>
<br>
trunk</span>バージョンで<span lang="EN-US">direct</span>モードを試そうとしています。<span lang="EN-US"><br>
</span>例の如く<span lang="EN-US">python</span>からポートの接続を行おうとすると、ランダムなタイミングで落ちます。<span lang="EN-US"><br>
</span>その時のメッセージとバックトレースは以下の通りです。<span lang="EN-US"><br>
</span>なにか分かりますでしょうか?<span lang="EN-US"><br>
<br>
omniORB: Application check failed. This indicates a bug in the application<br>
 using omniORB.  See the comment in the source code for more info.<br>
 file: ../../../../../src/lib/omniORB/orbcore/poa.cc<br>
 line: 1879<br>
 info: pd_destroyed == 2<br>
omniORB: Assertion failed.  This indicates a bug in the application<br>
using omniORB, or maybe in omniORB itself.<br>
 file: ../../../../../src/lib/omniORB/orbcore/objectAdapter.cc<br>
 line: 199<br>
 info: pd_signal == 0<br>
pure virtual method called<br>
terminate called without an active exception<br>
<br>
Program received signal SIGABRT, Aborted.<br>
[Switching to Thread 0x7fff8f7fe700 (LWP 4650)]<br>
0x00007ffff5f30c37 in __GI_raise (sig=sig@entry=6)<br>
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56<br>
56      ../nptl/sysdeps/unix/sysv/linux/raise.c: </span>そのようなファイルやディレクトリはありません<span lang="EN-US">.<br>
(gdb) bt<br>
#0  0x00007ffff5f30c37 in __GI_raise (sig=sig@entry=6)<br>
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:56<br>
#1  0x00007ffff5f34028 in __GI_abort () at abort.c:89<br>
#2  0x00007ffff6535535 in __gnu_cxx::__verbose_terminate_handler() ()<br>
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
#3  0x00007ffff65336d6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
#4  0x00007ffff6533703 in std::terminate() ()<br>
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
#5  0x00007ffff65341bf in __cxa_pure_virtual ()<br>
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6<br>
#6  0x00007fffcb0fede6 in omniLocalIdentity::dispatch(omniCallDescriptor&) ()<br>
   from /usr/lib/libomniORB4.so.1<br>
#7  0x00007fffcb10d8d5 in omniObjRef::_invoke(omniCallDescriptor&, bool) ()<br>
   from /usr/lib/libomniORB4.so.1<br>
#8  0x00007fffcbc9b27f in RTC::_objref_PortService::notify_disconnect (<br>
    this=0x7fff8410ecd0,<br>
    connector_id=0x7fff841c1070 "629208e8-d9ee-4388-89ee-ec442f5e060a")<br>
    at ../../../../src/lib/rtm/idl/RTCSK.cc:5439<br>
#9  0x00007fffcbc50830 in RTC::PortBase::disconnect (this=0x2f09958,<br>
    connector_id=0x7fff841c1070 "629208e8-d9ee-4388-89ee-ec442f5e060a")<br>
    at PortBase.cpp:368<br>
#10 0x00007fffcbc4f7e1 in RTC::PortBase::connect (this=0x2f09958,<br>
    connector_profile=...) at PortBase.cpp:211<br>
#11 0x00007fffcbc3522d in RTC::InPortBase::connect (this=0x2f09958,<br>
    connector_profile=...) at InPortBase.cpp:458<br>
#12 0x00007fffcbc9ac71 in _0RL_lcfn_bf82f9885dac07a6_64000000 (<br>
    cd=0x7fff8f7fcd70, svnt=0x2f0a380)<br>
    at ../../../../src/lib/rtm/idl/RTCSK.cc:5290<br>
#13 0x00007fffcb1284b9 in omniCallHandle::upcall(omniServant*, omniCallDescriptor&) () from /usr/lib/libomniORB4.so.1<br>
#14 0x00007fffcbc9b869 in RTC::_impl_PortService::_dispatch (this=0x2f09958,<br>
    _handle=...) at ../../../../src/lib/rtm/idl/RTCSK.cc:5504<br>
#15 0x00007fffcb11a07d in omni::omniOrbPOA::dispatch(omniCallHandle&, omniLocalIdentity*) () from /usr/lib/libomniORB4.so.1<br>
#16 0x00007fffcb0feb38 in omniLocalIdentity::dispatch(omniCallHandle&) ()<br>
   from /usr/lib/libomniORB4.so.1<br>
#17 0x00007fffcb127517 in omniInProcessIdentity::dispatch(omniCallDescriptor&)<br>
    () from /usr/lib/libomniORB4.so.1<br>
#18 0x00007fffcb10d8d5 in omniObjRef::_invoke(omniCallDescriptor&, bool) ()<br>
   from /usr/lib/libomniORB4.so.1<br>
<br>
<u></u><u></u></span></p>
</blockquote>
</div>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div>
</div>
</div></div></div>
</div>

<br>_______________________________________________<br>
openrtm-staff mailing list<br>
<a href="mailto:openrtm-staff@openrtm.org">openrtm-staff@openrtm.org</a><br>
<a href="http://www.openrtm.org/mailman/listinfo/openrtm-staff" rel="noreferrer" target="_blank">http://www.openrtm.org/mailman/listinfo/openrtm-staff</a><br>
<br></blockquote></div><br></div></div>