Ask Your Question
0

indigo ABI break in roscpp after update?

asked 2016-03-07 02:52:46 -0600

Karsten gravatar image

I recently ran into the following linking error on execution. I compiled my executable locally with the latest version of ROS indigo (patch level: 1.11.16) and deployed it on our robot with a older version of indigo (1.11.13).

<executable>: symbol lookup 
error: <executable>: 
undefined symbol: _ZNK3ros10NodeHandle8getParamERKSsRf

which effectively resolves in a missing symbol of:

$ c++filt _ZNK3ros10NodeHandle8getParamERKSsRf
ros::NodeHandle::getParam(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, float&) const

The quickfix solution was to reinstall (i.e. update roscpp) on our robots in order to remain compatible. This is obviously not a solution for non-root accessible robots. So the question here is whether this error should normally not occur or if a ABI compatibility between different patch levels of the same ROS release is not supported by default.

-Karsten

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2016-03-07 05:18:34 -0600

gvdhoorn gravatar image

updated 2016-03-07 05:22:25 -0600

I think you ran into ros_comm#703. This was mentioned by @William in his post to ros-users (Re: [ros-users] New packages for Indigo and Jade, 2015-11-20):

I wanted to let everyone know about an ABI break between roscpp 1.11.13 and 1.11.16 (applies for indigo and jade). Thanks to Jonathan Binney for finding and raising the issue with us: https://github.com/ros/ros_comm/issue...

That this is not normally something that should happen is also acknowledged by @William:

It's generally not our intention to introduce breaking ABI in our core packages, but it does happen from time to time. At this pointing fixing the ABI breakage would cause another ABI breakage for people who have already upgraded, so we're not going to take any action other than to notify people of the problem.

However, afaik there is currently no ABI compatibility guarantee for any of the OSRF distributed packages (no hard guarantee, but it is something that is taken very seriously):

We have long had plans to integrate ABI checking to our build farm in a general way, but there are several technical hurdles that we need to get over before that's possible. Short of a general solution, we could manually add it for a few core packages, and we may do that to avoid issues like this in the future. [..]

See [proposal] Versioning ROS libraries ABI (long) in ros-sig-buildsystem for an earlier discussion about this subject.

Note: I am not part of the OSRF, and am just describing my current understanding of the issue.

edit flag offensive delete link more

Comments

Thanks for the clear answer, I am pretty sure it's exactly the case you described. I guess I should have looked at the closed issues as well :)

Karsten gravatar imageKarsten ( 2016-03-07 08:27:05 -0600 )edit

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: 2016-03-07 02:52:46 -0600

Seen: 120 times

Last updated: Mar 07 '16