Thread #1 [interface_tests] 11582 [core: 1] (Suspended : Signal : SIGABRT:Aborted)
__GI_raise() at raise.c:54 0x7f0880940418
__GI_abort() at abort.c:89 0x7f088094201a
__assert_fail_base() at assert.c:92 0x7f0880938bd7
__GI___assert_fail() at assert.c:101 0x7f0880938c82
Eigen::internal::plain_array<double, 24, 0, 32>::plain_array() at DenseStorage.h:128 0x49c795
Eigen::DenseStorage<double, 24, 24, 1, 0>::DenseStorage() at DenseStorage.h:187 0x498b04
Eigen::PlainObjectBase<Eigen::Matrix<double, 24, 1, 0, 24, 1> >::PlainObjectBase() at PlainObjectBase.h:457 0x4954b0
Eigen::Matrix<double, 24, 1, 0, 24, 1>::Matrix() at Matrix.h:259 0x4921aa
ceres::Jet<double, 24>::Jet() at jet.h:182 0x48cd7a
ceres::internal::FixedArray<ceres::Jet<double, 24>, 8l>::InnerContainer::InnerContainer() at fixed_array.h:139 0x4862ba
ceres::internal::FixedArray<ceres::Jet<double, 24>, 8l>::FixedArray() at fixed_array.h:169 0x486344
ceres::internal::AutoDiff<im::InverseDepthAnchor2UVCostFunctor, double, 4, 4, 3, 4, 3, 6, 0, 0, 0, 0>::Differentiate() at autodiff.h:233 0x4807d9
ceres::AutoDiffCostFunction<im::InverseDepthAnchor2UVCostFunctor, 2, 4, 4, 3, 4, 3, 6, 0, 0, 0, 0>::Evaluate() at autodiff_cost_function.h:218 0x47efb7
ceres::internal::ResidualBlock::Evaluate(bool, double*, double*, double**, double*) const at 0x739a14
ceres::internal::ProgramEvaluator<ceres::internal::BlockEvaluatePreparer, ceres::internal::BlockJacobianWriter, ceres::internal::NullJacobianFinalizer>::Evaluate() at 0x7628d3
ceres::internal::TrustRegionMinimizer::Minimize() at 0x78085c
ceres::Solver::Solve() at 0x745e7d
ceres::Solve() at 0x747829
testTrackerBundleAdjusterRandom() at main_test.cpp:624 0x61714e
TestFixture_testTrackerBundleAdjusterMapPointParametrizationRandomNoInit_Test::TestBody() at main_test.cpp:770 0x61995a
<...more frames...>
Yes. I could not understand that either. T is a double. Inside the Jet it creates a Eigen::Matrix which is templated to use NoAlign bit. but it seems that when the constructor is being run the created Matrix is aligned.
Sorry I do not have any minimal test case that provokes the error at the moment.
BTW if we pass
-march=native => ASSERT triggers
-march=native -mno-avx -mno-avx2 => No assert triggers
I'm on an i7 and
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.1) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
So -march=native will allow Eigen to generate avx vectorization (and eigen does...).