[openrtm-users 03328] Ubuntu 14.04,OpenRTM C++ 1.1.xでSimpleIO ConnectorCompを実行するとinvalid pointerコアダンプが発生する

nagamatsu @ jsk.imi.i.u-tokyo.ac.jp nagamatsu @ jsk.imi.i.u-tokyo.ac.jp
2016年 8月 31日 (水) 21:29:37 JST


東京大学稲葉岡田研究室の永松と申します.
ただいまSimpleIOでOpenRTMの勉強をさせて頂いていたのですが,
気づいたことがあり報告させていただきます. 環境:
Ubuntu 14.04.5 LTS Linux 4.4.0-36-generic gcc 4.8.4 omniORB 4.1.6-2
OpenRTM-aist C++版 ソースコード OpenRTM-aist-1.1.2.tar.gz
をベースに記述いたします.
初回コンパイルを終えると,
examples/SimpleIO/以下で./run.shを実行するとサンプルプログラムが実行されるかと思います.
このときConnectorCompの実行時に, Name Server: localhost:9876
Subscription Type: flush push policy: skip count: connect: ConsoleIn ->
ConsoleOut *** Error in `(略)/examples/SimpleIO/.libs/lt-ConnectorComp':
free(): invalid pointer: 0x000000000040864b *** のようにinvalid
pointerエラーが発生します.
具体的には,ConnectorComp.cppの275行目, ReturnCode_t ret; if
(connect_origin == "in") { ret = pin[(CORBA::ULong)0]->connect(prof); }
のconnect時にエラーが発生しています.
表面的な原因を調査しましたところ, OpenRTM-aist
1.0.2でSimpleIOを実行した際にはエラーは発生せず,
同226行目 prof.connector_id = (char*)""; の部分が,OpenRTM-aist
1.0.xでは, prof.connector_id = ""; となっていました.
1.1.0や1.1.2でも同じく(char*)を削除するとエラーなく実行できました.
私の理解が及んでいるのはここまでです.
このエラーの原因をご存知の方や, prof.connector_id =
(char*)""; に
(char*)が追加された理由や経緯などをご存じの方はいらっしゃいますでしょうか.
以上,よろしくお願いいたします.



More information about the openrtm-users mailing list