I am running ros melodic on an up to date unstable x86_64 gentoo with ebuilds from the [ros-overlay](https://github.com/ros/ros-overlay). As far as I am aware the last update of the ebuilds was three days ago. I tested with moveit-0.10.0 as well as the recently released moveit-1.0.0.
So far I have tested gcc-7.3.0, gcc-7.4.0, gcc-8.2.0 and gcc-8.3.0 with binutils-2.31.1 and -2.32 with the same results.
I have tested eigen 3.3.4, 3.3.5 and 3.3.7 against gcc-8.3.0, binutils-2.32 and moveit-1.0.0 with the same results.
Either rviz or move_group will crash somewhere in moveit code with segfaults cause by eigen. I have attached a few crash reports with similar failures.
After reading ["Eigen Memory Issues"](https://github.com/ethz-asl/eigen_catkin/wiki/Eigen-Memory-Issues) and ["Explanation of the assertion on unaligned arrays"](http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html) I am aware eigen related segfaults can be caused by mismatched build flags which might be an issue on gentoo. All ros related packages are build with "-O2 -pipe -march=native -mtune=native -Wall -g -ggdb". I also created a local catkin workspace where I rebuild industrial_core, motoman, moveit, moveit_visual_tools and rviz with the same build flags and both -std=c++11 and -std=c++14 with no change in outcome.
I used to be able to run the same commands i tested with eigen-3.2.8 and moveit-0.10.0 but since moveit-1.0.0 requires eigen-3.3 and eigen-3.2 has been deprecated in gentoo I am reluctant to downgrade back to that. Blender and meshlab which also depend on eigen do run without segfaults.
Since I am not fully certain if this is a build system error or an error in moveit I haven't filled an issue on github yet.
When i compile moveit_core with "-Wall" set I get this suspicious warning:
/var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_state/src/robot_state.cpp: In member function 'void moveit::core::RobotState::copyFrom(const moveit::core::RobotState&)':
/var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_state/src/robot_state.cpp:161:79: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'Eigen::Isometry3d' {aka 'class Eigen::Transform'} with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
memcpy(variable_joint_transforms_, other.variable_joint_transforms_, bytes);
^
In file included from /usr/include/eigen3/Eigen/Geometry:44,
from /var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_model/include/moveit/robot_model/joint_model.h:47,
from /var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_model/include/moveit/robot_model/joint_model_group.h:41,
from /var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_model/include/moveit/robot_model/robot_model.h:47,
from /var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_state/include/moveit/robot_state/robot_state.h:41,
from /var/tmp/portage/ros-melodic-moveit_core-1.0.0/work/moveit_core-1.0.0/robot_state/src/robot_state.cpp:38:
/usr/include/eigen3/Eigen/src/Geometry/Transform.h:201:7: note: 'Eigen::Isometry3d' {aka 'class Eigen::Transform'} declared here
class Transform
^~~~~~~~~
trace 1:
> roslaunch motoman_sda10f_moveit_config demo.launch
Thread 1 (Thread 0x7f7251ee1240 (LWP 5998)):
[KCrash Handler]
#6 0x00007f72030373f5 in _mm256_store_pd (__A=..., __P=0x55edf39a24d0) at /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/avxintrin.h:867
#7 Eigen::internal::pstore(double*, double __vector(4) const&) (from=..., to=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h:252
#8 Eigen::internal::pstoret(double*, double __vector(4) const&) (from=..., to=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:474
#9 Eigen::internal::assign_op::assignPacket<32, double __vector(4)>(double*, double __vector(4) const&) const (this=, b=..., a=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h:28
#10 Eigen::internal::generic_dense_assignment_kernel>, Eigen::internal::evaluator, Eigen::Matrix>>, Eigen::internal::assign_op, 0>::assignPacket<32, 32, double __vector(4)>(long, long) (this=, this=, col=0, row=0) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:652
#11 Eigen::internal::generic_dense_assignment_kernel>, Eigen::internal::evaluator, Eigen::Matrix>>, Eigen::internal::assign_op, 0>::assignPacketByOuterInner<32, 32, double __vector(4)>(long, long) (inner=0, outer=0, this=) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:666
#12 Eigen::internal::copy_using_evaluator_innervec_CompleteUnrolling>, Eigen::internal::evaluator, Eigen::Matrix>>, Eigen::internal::assign_op, 0>, 0, 16>::run (kernel=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:274
#13 Eigen::internal::dense_assignment_loop>, Eigen::internal::evaluator, Eigen::Matrix>>, Eigen::internal::assign_op, 0>, 2, 2>::run (kernel=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:468
#14 Eigen::internal::call_dense_assignment_loop, Eigen::CwiseNullaryOp, Eigen::Matrix>, Eigen::internal::assign_op> (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:741
#15 Eigen::internal::Assignment, Eigen::CwiseNullaryOp, Eigen::Matrix>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:879
#16 Eigen::internal::call_assignment_no_alias, Eigen::CwiseNullaryOp, Eigen::Matrix>, Eigen::internal::assign_op> (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:836
#17 Eigen::internal::call_assignment, Eigen::CwiseNullaryOp, Eigen::Matrix>, Eigen::internal::assign_op>(Eigen::Matrix&, Eigen::CwiseNullaryOp, Eigen::Matrix> const&, Eigen::internal::assign_op const&, Eigen::internal::enable_if, Eigen::Matrix>, Eigen::internal::evaluator_traits, Eigen::Matrix>>::Shape>::value, void*>::type) (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:804
#18 Eigen::internal::call_assignment, Eigen::CwiseNullaryOp, Eigen::Matrix>> (src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782
#19 Eigen::PlainObjectBase>::_set, Eigen::Matrix>> (other=..., this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:714
#20 Eigen::Matrix::operator=, Eigen::Matrix>> (other=..., this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:225
#21 Eigen::DenseBase>::setConstant (val=, this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h:327
#22 Eigen::DenseBase>::setZero (this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h:501
#23 Eigen::internal::setIdentity_impl, true>::run (m=...) at /usr/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h:757
#24 Eigen::MatrixBase>::setIdentity (this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h:776
#25 Eigen::Transform::setIdentity (this=0x55edf39a24d0) at /usr/include/eigen3/Eigen/src/Geometry/Transform.h:533
#26 moveit::core::FixedJointModel::computeTransform (this=0x7f71f4023950, transf=...) at /home/user/test_ws/src/moveit/moveit_core/robot_model/src/fixed_joint_model.cpp:94
#27 0x00007f72030b95e3 in moveit::core::RobotState::getJointTransform (joint=, this=0x55edf2446660) at /home/user/test_ws/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model.h:204
#28 moveit::core::RobotState::updateLinkTransformsInternal (this=this@entry=0x55edf2446660, start=) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:652
#29 0x00007f72030b9a02 in moveit::core::RobotState::updateLinkTransforms (this=this@entry=0x55edf2446660) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:616
#30 0x00007f72030b9a9c in moveit::core::RobotState::updateCollisionBodyTransforms (this=0x55edf2446660) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:587
#31 0x00007f72340ba517 in moveit_rviz_plugin::PlanningSceneDisplay::onRobotModelLoaded (this=0x55edf2ef21f0) at /home/user/test_ws/src/moveit/moveit_ros/visualization/planning_scene_rviz_plugin/src/planning_scene_display.cpp:548
#32 0x00007f72343da74c in moveit_rviz_plugin::MotionPlanningDisplay::onRobotModelLoaded (this=0x55edf2ef21f0) at /home/user/test_ws/src/moveit/moveit_ros/visualization/motion_planning_rviz_plugin/src/motion_planning_display.cpp:1123
#33 0x00007f72340bacf3 in boost::function0::operator() (this=0x7ffc57e7ed50) at /usr/include/boost/function/function_template.hpp:673
#34 moveit_rviz_plugin::PlanningSceneDisplay::executeMainLoopJobs (this=0x55edf2ef21f0) at /home/user/test_ws/src/moveit/moveit_ros/visualization/planning_scene_rviz_plugin/src/planning_scene_display.cpp:249
#35 0x00007f72340baf89 in moveit_rviz_plugin::PlanningSceneDisplay::update (this=0x55edf2ef21f0, wall_dt=0.0319799781, ros_dt=0.0319808163) at /home/user/test_ws/src/moveit/moveit_ros/visualization/planning_scene_rviz_plugin/src/planning_scene_display.cpp:618
#36 0x00007f7259d30a01 in rviz::DisplayGroup::update (this=0x55edf24216c0, wall_dt=0.0319799781, ros_dt=0.0319808163) at /home/user/test_ws/src/rviz/src/rviz/display_group.cpp:240
#37 0x00007f7259df2966 in rviz::VisualizationManager::onUpdate (this=0x55edf2412e20) at /home/user/test_ws/src/rviz/src/rviz/visualization_manager.cpp:353
#38 0x00007f725888a4ce in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5
#39 0x00007f7258895db7 in QTimer::timeout(QTimer::QPrivateSignal) () from /usr/lib64/libQt5Core.so.5
#40 0x00007f725888b03b in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5
#41 0x00007f72596ef451 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#42 0x00007f72596f6ad0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#43 0x00007f7258862f72 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#44 0x00007f72588b1079 in QTimerInfoList::activateTimers() () from /usr/lib64/libQt5Core.so.5
#45 0x00007f72588b18d1 in timerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/libQt5Core.so.5
#46 0x00007f725548a84e in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#47 0x00007f725548aae8 in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0
#48 0x00007f725548ab7c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#49 0x00007f72588b1d33 in QEventDispatcherGlib::processEvents(QFlags) () from /usr/lib64/libQt5Core.so.5
#50 0x00007f7251842171 in QPAEventDispatcherGlib::processEvents(QFlags) () from /usr/lib64/libQt5XcbQpa.so.5
#51 0x00007f7258861f4b in QEventLoop::exec(QFlags) () from /usr/lib64/libQt5Core.so.5
#52 0x00007f7258869db2 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#53 0x000055edf1a4c1db in main (argc=, argv=) at /home/user/test_ws/src/rviz/src/rviz/main.cpp:42
[Inferior 1 (process 5998) detached]
trace 2:
> roslaunch moveit_visual_tools demo_rviz.launch
Thread 1 (Thread 0x7f7883d6d240 (LWP 2716)):
[KCrash Handler]
#6 0x00007f7839034a3b in _mm256_store_pd (__A=..., __P=) at /usr/lib/gcc/x86_64-pc-linux-gnu/8.3.0/include/emmintrin.h:166
#7 Eigen::internal::pstore(double*, double __vector(4) const&) (from=..., to=) at /usr/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h:252
#8 Eigen::internal::pstoret(double*, double __vector(4) const&) (from=..., to=) at /usr/include/eigen3/Eigen/src/Core/GenericPacketMath.h:474
#9 Eigen::internal::assign_op::assignPacket<32, double __vector(4)>(double*, double __vector(4) const&) const (this=, b=..., a=) at /usr/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h:28
#10 Eigen::internal::generic_dense_assignment_kernel>, Eigen::internal::evaluator>, Eigen::internal::assign_op, 0>::assignPacket<32, 32, double __vector(4)>(long, long) (this=, this=, col=, row=) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:652
#11 Eigen::internal::generic_dense_assignment_kernel>, Eigen::internal::evaluator>, Eigen::internal::assign_op, 0>::assignPacketByOuterInner<32, 32, double __vector(4)>(long, long) (inner=, outer=, this=) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:666
#12 Eigen::internal::copy_using_evaluator_innervec_CompleteUnrolling>, Eigen::internal::evaluator>, Eigen::internal::assign_op, 0>, 0, 16>::run (kernel=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:274
#13 Eigen::internal::dense_assignment_loop>, Eigen::internal::evaluator>, Eigen::internal::assign_op, 0>, 2, 2>::run (kernel=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:468
#14 Eigen::internal::call_dense_assignment_loop, Eigen::Matrix, Eigen::internal::assign_op> (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:741
#15 Eigen::internal::Assignment, Eigen::Matrix, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:879
#16 Eigen::internal::call_assignment_no_alias, Eigen::Matrix, Eigen::internal::assign_op> (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:836
#17 Eigen::internal::call_assignment, Eigen::Matrix, Eigen::internal::assign_op>(Eigen::Matrix&, Eigen::Matrix const&, Eigen::internal::assign_op const&, Eigen::internal::enable_if, Eigen::internal::evaluator_traits>::Shape>::value, void*>::type) (func=..., src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:804
#18 Eigen::internal::call_assignment, Eigen::Matrix> (src=..., dst=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782
#19 Eigen::PlainObjectBase>::_set> (other=..., this=) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:714
#20 Eigen::Matrix::operator= (other=..., this=) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:208
#21 Eigen::Transform::operator= (other=..., this=) at /usr/include/eigen3/Eigen/src/Geometry/Transform.h:286
#22 moveit::core::FloatingJointModel::computeTransform (this=0x5583d7e89970, joint_values=0x5583d89e2d78, transf=...) at /home/user/test_ws/src/moveit/moveit_core/robot_model/src/floating_joint_model.cpp:220
#23 0x00007f78390b65e3 in moveit::core::RobotState::getJointTransform (joint=, this=0x5583d7dddda0) at /home/user/test_ws/src/moveit/moveit_core/robot_model/include/moveit/robot_model/joint_model.h:204
#24 moveit::core::RobotState::updateLinkTransformsInternal (this=this@entry=0x5583d7dddda0, start=) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:652
#25 0x00007f78390b6a02 in moveit::core::RobotState::updateLinkTransforms (this=this@entry=0x5583d7dddda0) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:616
#26 0x00007f78390b6a9c in moveit::core::RobotState::updateCollisionBodyTransforms (this=0x5583d7dddda0) at /home/user/test_ws/src/moveit/moveit_core/robot_state/src/robot_state.cpp:587
#27 0x00007f78682914da in moveit_rviz_plugin::RobotStateDisplay::update (this=0x5583d7e23180, wall_dt=, ros_dt=) at /home/user/test_ws/src/moveit/moveit_ros/visualization/robot_state_rviz_plugin/src/robot_state_display.cpp:414
#28 0x00007f788bbbca01 in rviz::DisplayGroup::update (this=0x5583d7ef7c20, wall_dt=0.473727763, ros_dt=0.473739237) at /home/user/test_ws/src/rviz/src/rviz/display_group.cpp:240
#29 0x00007f788bc7e966 in rviz::VisualizationManager::onUpdate (this=0x5583d7e05550) at /home/user/test_ws/src/rviz/src/rviz/visualization_manager.cpp:353
#30 0x00007f788a7164ce in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib64/libQt5Core.so.5
#31 0x00007f788a721db7 in QTimer::timeout(QTimer::QPrivateSignal) () from /usr/lib64/libQt5Core.so.5
#32 0x00007f788a71703b in QObject::event(QEvent*) () from /usr/lib64/libQt5Core.so.5
#33 0x00007f788b57b451 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#34 0x00007f788b582ad0 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#35 0x00007f788a6eef72 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib64/libQt5Core.so.5
#36 0x00007f788a73d079 in QTimerInfoList::activateTimers() () from /usr/lib64/libQt5Core.so.5
#37 0x00007f788a73d909 in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/libQt5Core.so.5
#38 0x00007f788731684e in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#39 0x00007f7887316ae8 in g_main_context_iterate.isra () from /usr/lib64/libglib-2.0.so.0
#40 0x00007f7887316b7c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#41 0x00007f788a73dd33 in QEventDispatcherGlib::processEvents(QFlags) () from /usr/lib64/libQt5Core.so.5
#42 0x00007f78836ce171 in QPAEventDispatcherGlib::processEvents(QFlags) () from /usr/lib64/libQt5XcbQpa.so.5
#43 0x00007f788a6edf4b in QEventLoop::exec(QFlags) () from /usr/lib64/libQt5Core.so.5
#44 0x00007f788a6f5db2 in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#45 0x00005583d6a601db in main (argc=, argv=) at /home/user/test_ws/src/rviz/src/rviz/main.cpp:42
[Inferior 1 (process 2716) detached]
↧