0
$\begingroup$

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;

     while(1){
         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))){
             try{
                 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.

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

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.

$\endgroup$

1 Answer 1

0
$\begingroup$

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.

$\endgroup$

Your Answer

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