Rosanswers logo

I'm running groovy on a pandaboard(ubuntu12.04). I running following program, but this program was core dumped.

 #include "tf/transform_broadcaster.h"
 #include "tf/transform_listener.h"
 int main(int argc, char **argv){
     ros::init(argc, argv, "tf");
     tf::TransformBroadcaster br;
     tf::TransformListener listener;

         tf::Transform transform;
         transform.setOrigin( tf::Vector3(0, 0, 0) );
         transform.setRotation(tf::Quaternion(tf::Vector3(0, 0, 0), 1));
         br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "test", "test2"));

         geometry_msgs::PoseStamped map_pos;
         geometry_msgs::PoseStamped test2_pos;
         if(listener.waitForTransform("/test", ros::Time::now(), "test2", ros::Time::now(), "/test", ros::Duration(1.0))){
                 listener.transformPose("test2", map_pos, test2_pos);
             }catch (tf::TransformException &ex) {

I got following dmsgs.

 [ 1259.359893] Alignment trap: not handling instruction ed977b00 at []
 [ 1259.359924] Unhandled fault: alignment exception (0x011) at 0x00e24c07

And I used gdb and got the following backtrace.

 #0  0x4004f294 in void ros::serialization::VectorSerializer >, std::allocator > >, void>::read(ros::serialization::IStream&, std::vector >, std::allocator > > >&) () from /opt/ros/groovy/lib/libtf.so
 #1  0x4004f592 in ros::SubscriptionCallbackHelperT > const> const&, void>::deserialize(ros::SubscriptionCallbackHelperDeserializeParams const&) () from /opt/ros/groovy/lib/libtf.so
 #2  0x4017535e in ros::MessageDeserializer::deserialize() ()
    from /opt/ros/groovy/lib/libroscpp.so
 #3  0x4016f376 in ros::SubscriptionQueue::call() ()
    from /opt/ros/groovy/lib/libroscpp.so
 #4  0x40139070 in ros::CallbackQueue::callOneCB(ros::CallbackQueue::TLS*) ()
    from /opt/ros/groovy/lib/libroscpp.so
 #5  0x4013a00e in ros::CallbackQueue::callAvailable(ros::WallDuration) ()
    from /opt/ros/groovy/lib/libroscpp.so
 #6  0x4004b8f8 in tf::TransformListener::dedicatedListenerThread() ()
    from /opt/ros/groovy/lib/libtf.so
 #7  0x4004b654 in boost::detail::thread_data, boost::_bi::list1 > > >::run() () from /opt/ros/groovy/lib/libtf.so
 #8  0x403c6602 in thread_proxy () from /usr/lib/libboost_thread.so.1.46.1
 #9  0x40099ed2 in start_thread ()
    from /lib/arm-linux-gnueabihf/libpthread.so.0
 #10 0x4035df18 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
 #11 0x4035df18 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
 Backtrace stopped: previous frame identical to this frame (corrupt stack?)

I tried commanding "aptitude upgrade" the day after yesterday, but still core dumped.

Any idea if this is a bug in my code or a bug in the ROS code? Or What can I do to debug this more and solve a problem?

Originally posted by Hiroaki on ROS Answers with karma: 1 on 2013-08-04

Post score: 0

Original comments

Comment by ahendrix on 2013-08-05:
Which arm architecture; armel or armhf? Which version of roscpp_serialization do you have?

Comment by Hiroaki on 2013-08-05:
I use armhf. Version of ros_serialization is 0.3.14. Today I tried following commands and updated version of ros_serialization to 0.3.16.

cd src
git clone https://github.com/ros/roscpp_core 
cd ../
rospack profile

After this, shared library dependencies turned into following.

 $ ldd libtf.so  | grep serial
     libroscpp_serialization.so => /home/pandaboard/catkin_ws/devel/lib/libroscpp_serialization.so (0x40112000)
 $ ldd libroscpp.so  | grep serial
         libroscpp_serialization.so => /home/pandaboard/catkin_ws/devel/lib/libroscpp_serialization.so (0x40072000)
 $ ldd lib/tf_test/tf_test_node | grep serial
         libroscpp_serialization.so => /home/pandaboard/catkin_ws/devel/lib/libroscpp_serialization.so (0x400b1000)

But the program still core dumped.


1 Answer 1


Rosanswers logo

There was a known issues with serialization and alignment on armhf processors. See http://answers.ros.org/question/44208/problems-with-ros-installation-on-pandaboard-with-armhf

I was under the impression it was resolved here: https://github.com/ros/roscpp_core/pull/8 but there may be another instance somewhere.

Originally posted by tfoote with karma: 58457 on 2013-08-05

This answer was ACCEPTED on the original site

Post score: 0

Original comments

Comment by ahendrix on 2013-08-05:
I suspect we're not detecting ARM properly in the serialization code; it looks like we should be using arm instead of __arm in roscpp_serialization/include/ros/serialization.h according to http://sourceforge.net/p/predef/wiki/Architectures/

Comment by ICodeRaven on 2013-09-26:
Bump. Similar issue on Groovy on an Odroid XU. Using the ahendrix repo

Comment by Dirk Thomas on 2013-09-28:
roscpp_serialization 0.3.16 already uses __arm and arm: https://github.com/ros/roscpp_core/commit/308e737885929f9923fd24e9219876c50f15681d

Comment by ICodeRaven on 2013-10-01:
Just built everything from scratch (after lots of pain), and yes it works now.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.