Ask Your Question
0

ccny_rgbd runtime symbol lookup error

asked 2013-02-17 02:42:32 -0600

Spym gravatar image

updated 2013-02-17 04:48:20 -0600

Checked out this revision: https://github.com/ccny-ros-pkg/ccny_rgbd_tools/commit/88b1210524a32487f3538a5b7d28f2bbf3f6472e

Applied this patch: https://github.com/ccny-ros-pkg/ccny_rgbd_tools/issues/3

Compiled, everything is fine.

When I start nodes visual_odometry_node or keyframe_mapper_node I see the symbol lookup error appearing at run time:

[ INFO] [1361108695.958712716]: Starting RGBD Keyframe Mapper
/home/pavel/ros/ccny_rgbd_tools/ccny_rgbd/bin/visual_odometry_node: symbol lookup error: /home/pavel/ros/ccny_rgbd_tools/ccny_rgbd/lib/libccny_rgbd_registration.so: undefined symbol: _ZN9ccny_rgbd26removeInvalidDistributionsERKSt6vectorIN5Eigen6MatrixIfLi3ELi1ELi0ELi3ELi1EEESaIS3_EERKS0_INS2_IfLi3ELi3ELi0ELi3ELi3EEESaIS8_EERKS0_IbSaIbEERS5_RSA_
[visual_odometry_node-1] process has died [pid 30803, exit code 127, cmd /home/pavel/ros/ccny_rgbd_tools/ccny_rgbd/bin/visual_odometry_node __name:=visual_odometry_node __log:=/home/pavel/.ros/log/32aaa392-7908-11e2-8df2-00179a7bfadb/visual_odometry_node-1.log].
log file: /home/pavel/.ros/log/32aaa392-7908-11e2-8df2-00179a7bfadb/visual_odometry_node-1*.log

Ubuntu 12.04, GCC 4.6.3, ROS Fuerte.

Any help? Thanks in advance.

edit retag flag offensive close merge delete

Comments

I applied the patch you submitted. This looks like an Eigen link error, possibly against typedef std::vector<Eigen::Matrix3f> Matrix3fVector. Could you run visual_odometry_node in a debugger?

Ivan Dryanovski gravatar imageIvan Dryanovski ( 2013-02-17 05:10:57 -0600 )edit

Ivan, why do you think the error is against this typedef? I have no idea why not, just curious. (I just submitted the relevant issue on Github, patch included)

Spym gravatar imageSpym ( 2013-02-18 08:14:20 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2013-02-18 07:58:47 -0600

Spym gravatar image

Well, the library ccny_rgbd_registration uses the symbol ccny_rgbd::removeInvalidDistributions(...), which is defined in anonther library ccny_rgbd_util. I explicitly linked ccny_rgbd_registration with ccny_rgbd_util, and problem is gone.

I barely understand why it wasn't working when there was no direct linkage between these libraries. Maybe this symbol was sort of optimized out because executable file wasn't using it directly? But I've tried to build executables with -O0, and this didn't help.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2013-02-17 02:42:32 -0600

Seen: 160 times

Last updated: Feb 18 '13