ami-iit / kindyn-vio

Development on hold.
GNU Lesser General Public License v3.0
12 stars 1 forks source link

BLF filters segmentation fault at `getOutput` call #25

Closed prashanthr05 closed 2 years ago

prashanthr05 commented 2 years ago

Trying to run the EKFOdometryiSAM2 example code added in https://github.com/dic-iit/kindyn-vio/commit/e03a5bea068e3a31870d07a9df8c72e95e813c21 results in segmentation fault when the call to getOutput() method is uncommented, with following output. It uses InvariantEKFBaseEstimator class as the underlying floating base estimation method.

Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf
Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat
Opening mat file successful.
Loading model successful.
r_sole position in the world: -0.0161299
l_sole position in the world: -0.016674
Configured estimator successful
[2021-07-29 18:53:17.389] [thread: 45321] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful.
Configured contact detector successful.
double free or corruption (out)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EKFOdometryiSAM2UnitTests is a Catch v2.11.3 host application.
Run with -? for options

-------------------------------------------------------------------------------
Invariant EKF Base Estimator + iSAM2 Fixed Lag Smoothing
-------------------------------------------------------------------------------
/home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp:162
...............................................................................

/home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp:162: FAILED:
  {Unknown expression after the reported line}
due to a fatal error condition:
  SIGABRT - Abort (abnormal termination) signal

===============================================================================
test cases: 1 | 1 failed
assertions: 6 | 5 passed | 1 failed

Aborted (core dumped)

Running the tests from within the BLF library (InvariantEKFBaseEstimatorTest in BLF), I do not have this problem.

Valgrind output on debug ``` sh ==45456== Memcheck, a memory error detector ==45456== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==45456== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==45456== Command: ./bin/EKFOdometryiSAM2UnitTests ==45456== Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 Configured estimator successful [2021-07-29 18:55:49.558] [thread: 45456] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. ==45456== Invalid free() / delete / delete[] / realloc() ==45456== at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4BD4198: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::calcLc(BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState const&, BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::SkewSymContainter const&, bool const&, Eigen::Matrix&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD8FE1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== by 0x4A48F8F: Catch::RunContext::invokeActiveTestCase() (catch.hpp:12819) ==45456== by 0x4A48CC2: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&) (catch.hpp:12792) ==45456== by 0x4A476E8: Catch::RunContext::runTest(Catch::TestCase const&) (catch.hpp:12553) ==45456== by 0x4A4A949: Catch::(anonymous namespace)::TestGroup::execute() (catch.hpp:13147) ==45456== by 0x4A4BD8A: Catch::Session::runInternal() (catch.hpp:13353) ==45456== Address 0x87de0c0 is 16 bytes inside a block of size 1,832 alloc'd ==45456== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x119985: Eigen::internal::handmade_aligned_malloc(unsigned long) (Memory.h:88) ==45456== by 0x119A15: Eigen::internal::aligned_malloc(unsigned long) (Memory.h:164) ==45456== by 0x123818: void* Eigen::internal::conditional_aligned_malloc(unsigned long) (Memory.h:214) ==45456== by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto(unsigned long) (Memory.h:374) ==45456== by 0x11EC0F: Eigen::DenseStorage::resize(long, long, long) (DenseStorage.h:408) ==45456== by 0x11C4CB: Eigen::PlainObjectBase >::resize(long, long) (PlainObjectBase.h:293) ==45456== by 0x4BD35E5: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::calcAdjointX(BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState const&, BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::SkewSymContainter const&, Eigen::Matrix&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD3FF2: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::calcLc(BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState const&, BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::SkewSymContainter const&, bool const&, Eigen::Matrix&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD8FE1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== ==45456== Invalid free() / delete / delete[] / realloc() ==45456== at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4BD86CE: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE1D74: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE39F7: void Eigen::internal::call_dense_assignment_loop, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const>, Eigen::internal::assign_op >(Eigen::Matrix&, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const> const&, Eigen::internal::assign_op const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD91E1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== by 0x4A48F8F: Catch::RunContext::invokeActiveTestCase() (catch.hpp:12819) ==45456== by 0x4A48CC2: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&) (catch.hpp:12792) ==45456== by 0x4A476E8: Catch::RunContext::runTest(Catch::TestCase const&) (catch.hpp:12553) ==45456== Address 0x87e05c0 is 32 bytes inside a block of size 1,832 alloc'd ==45456== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x119985: Eigen::internal::handmade_aligned_malloc(unsigned long) (Memory.h:88) ==45456== by 0x119A15: Eigen::internal::aligned_malloc(unsigned long) (Memory.h:164) ==45456== by 0x123818: void* Eigen::internal::conditional_aligned_malloc(unsigned long) (Memory.h:214) ==45456== by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto(unsigned long) (Memory.h:374) ==45456== by 0x11EC0F: Eigen::DenseStorage::resize(long, long, long) (DenseStorage.h:408) ==45456== by 0x11C4CB: Eigen::PlainObjectBase >::resize(long, long) (PlainObjectBase.h:293) ==45456== by 0x4BD85C9: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE1D74: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE39F7: void Eigen::internal::call_dense_assignment_loop, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const>, Eigen::internal::assign_op >(Eigen::Matrix&, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const> const&, Eigen::internal::assign_op const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD91E1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== ==45456== Invalid free() / delete / delete[] / realloc() ==45456== at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4BE1E5A: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE39F7: void Eigen::internal::call_dense_assignment_loop, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const>, Eigen::internal::assign_op >(Eigen::Matrix&, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const> const&, Eigen::internal::assign_op const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD91E1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== by 0x4A48F8F: Catch::RunContext::invokeActiveTestCase() (catch.hpp:12819) ==45456== by 0x4A48CC2: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&) (catch.hpp:12792) ==45456== by 0x4A476E8: Catch::RunContext::runTest(Catch::TestCase const&) (catch.hpp:12553) ==45456== by 0x4A4A949: Catch::(anonymous namespace)::TestGroup::execute() (catch.hpp:13147) ==45456== Address 0x87dfe40 is 16 bytes inside a block of size 1,832 alloc'd ==45456== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x119985: Eigen::internal::handmade_aligned_malloc(unsigned long) (Memory.h:88) ==45456== by 0x119A15: Eigen::internal::aligned_malloc(unsigned long) (Memory.h:164) ==45456== by 0x123818: void* Eigen::internal::conditional_aligned_malloc(unsigned long) (Memory.h:214) ==45456== by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto(unsigned long) (Memory.h:374) ==45456== by 0x11EC0F: Eigen::DenseStorage::resize(long, long, long) (DenseStorage.h:408) ==45456== by 0x11C4CB: Eigen::PlainObjectBase >::resize(long, long) (PlainObjectBase.h:293) ==45456== by 0x4BE1D69: Eigen::internal::Assignment, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::internal::assign_op, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0> const&, Eigen::internal::assign_op const&) [clone .isra.0] (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BE39F7: void Eigen::internal::call_dense_assignment_loop, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const>, Eigen::internal::assign_op >(Eigen::Matrix&, Eigen::CwiseBinaryOp, Eigen::Product, Eigen::Matrix, 0>, Eigen::Matrix, 0>, Eigen::Transpose >, 0>, Eigen::Transpose >, 0> const, Eigen::CwiseNullaryOp, Eigen::Matrix const> const> const&, Eigen::internal::assign_op const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD91E1: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== ==45456== Invalid free() / delete / delete[] / realloc() ==45456== at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4BE17D7: void Eigen::internal::generic_product_impl, Eigen::Matrix, 0>, Eigen::Transpose >, Eigen::DenseShape, Eigen::DenseShape, 8>::evalTo >(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0> const&, Eigen::Transpose > const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD92A4: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== by 0x4A48F8F: Catch::RunContext::invokeActiveTestCase() (catch.hpp:12819) ==45456== by 0x4A48CC2: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&) (catch.hpp:12792) ==45456== by 0x4A476E8: Catch::RunContext::runTest(Catch::TestCase const&) (catch.hpp:12553) ==45456== by 0x4A4A949: Catch::(anonymous namespace)::TestGroup::execute() (catch.hpp:13147) ==45456== by 0x4A4BD8A: Catch::Session::runInternal() (catch.hpp:13353) ==45456== Address 0x87e1bc0 is 16 bytes inside a block of size 1,832 alloc'd ==45456== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x119985: Eigen::internal::handmade_aligned_malloc(unsigned long) (Memory.h:88) ==45456== by 0x119A15: Eigen::internal::aligned_malloc(unsigned long) (Memory.h:164) ==45456== by 0x123818: void* Eigen::internal::conditional_aligned_malloc(unsigned long) (Memory.h:214) ==45456== by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto(unsigned long) (Memory.h:374) ==45456== by 0x11EC0F: Eigen::DenseStorage::resize(long, long, long) (DenseStorage.h:408) ==45456== by 0x11C4CB: Eigen::PlainObjectBase >::resize(long, long) (PlainObjectBase.h:293) ==45456== by 0x4BE16B1: void Eigen::internal::generic_product_impl, Eigen::Matrix, 0>, Eigen::Transpose >, Eigen::DenseShape, Eigen::DenseShape, 8>::evalTo >(Eigen::Matrix&, Eigen::Product, Eigen::Matrix, 0> const&, Eigen::Transpose > const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BD92A4: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD85A: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== ==45456== Invalid free() / delete / delete[] / realloc() ==45456== at 0x483CA3F: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4BDC907: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::updateKinematics(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD972: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== by 0x4A48F8F: Catch::RunContext::invokeActiveTestCase() (catch.hpp:12819) ==45456== by 0x4A48CC2: Catch::RunContext::runCurrentTest(std::__cxx11::basic_string, std::allocator >&, std::__cxx11::basic_string, std::allocator >&) (catch.hpp:12792) ==45456== by 0x4A476E8: Catch::RunContext::runTest(Catch::TestCase const&) (catch.hpp:12553) ==45456== by 0x4A4A949: Catch::(anonymous namespace)::TestGroup::execute() (catch.hpp:13147) ==45456== by 0x4A4BD8A: Catch::Session::runInternal() (catch.hpp:13353) ==45456== by 0x4A4BA80: Catch::Session::run() (catch.hpp:13309) ==45456== Address 0x87e3240 is 32 bytes inside a block of size 5,440 alloc'd ==45456== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x119985: Eigen::internal::handmade_aligned_malloc(unsigned long) (Memory.h:88) ==45456== by 0x119A15: Eigen::internal::aligned_malloc(unsigned long) (Memory.h:164) ==45456== by 0x123818: void* Eigen::internal::conditional_aligned_malloc(unsigned long) (Memory.h:214) ==45456== by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto(unsigned long) (Memory.h:374) ==45456== by 0x11EC0F: Eigen::DenseStorage::resize(long, long, long) (DenseStorage.h:408) ==45456== by 0x11C4CB: Eigen::PlainObjectBase >::resize(long, long) (PlainObjectBase.h:293) ==45456== by 0x4BDC19E: BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::updateKinematics(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements&, double const&) (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x4BAD972: BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() (in /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0) ==45456== by 0x117F3A: ____C_A_T_C_H____T_E_S_T____0() (EKFOdometryiSAM2.cpp:335) ==45456== by 0x4A4F6ED: Catch::TestInvokerAsFunction::invoke() const (catch.hpp:14065) ==45456== by 0x4A4ECE0: Catch::TestCase::invoke() const (catch.hpp:13958) ==45456== **45456** new/new[] failed and should throw an exception, but Valgrind **45456** cannot throw exceptions and so is aborting instead. Sorry. ==45456== at 0x483B3CC: ??? (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x483BED5: operator new(unsigned long) (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==45456== by 0x4AAD6C0: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:219) ==45456== by 0x123CA3: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45456== by 0x123D0E: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45456== by 0x129A28: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45456== by 0x129A76: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45456== by 0x129578: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45456== by 0x128D6D: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45456== by 0x127E5B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45456== by 0x126EA4: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45456== by 0x1258FD: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45456== ==45456== HEAP SUMMARY: ==45456== in use at exit: 2,379,938 bytes in 5,726 blocks ==45456== total heap usage: 61,530 allocs, 55,809 frees, 12,885,122 bytes allocated ==45456== ==45456== LEAK SUMMARY: ==45456== definitely lost: 12,768 bytes in 5 blocks ==45456== indirectly lost: 0 bytes in 0 blocks ==45456== possibly lost: 782,504 bytes in 24 blocks ==45456== still reachable: 1,584,666 bytes in 5,697 blocks ==45456== suppressed: 0 bytes in 0 blocks ==45456== Rerun with --leak-check=full to see details of leaked memory ==45456== ==45456== For lists of detected and suppressed errors, rerun with: -s ==45456== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0) ```
prashanthr05 commented 2 years ago

Same for LeggedOdometry,

Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf
Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat
Opening mat file successful.
Loading model successful.
r_sole position in the world: -0.0161299
l_sole position in the world: -0.016674
Configured estimator successful
[2021-07-29 18:59:30.679] [thread: 45668] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful.
Configured contact detector successful.
[LeggedOdometry::updateKinematics] Initialized LeggedOdometry.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LeggedOdometryiSAM2UnitTests is a Catch v2.11.3 host application.
Run with -? for options

-------------------------------------------------------------------------------
Legged Odometry + iSAM2 Fixed Lag Smoothing
-------------------------------------------------------------------------------
/home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:109
...............................................................................

/home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:109: FAILED:
  {Unknown expression after the reported line}
due to a fatal error condition:
  SIGSEGV - Segmentation violation signal

===============================================================================
test cases: 1 | 1 failed
assertions: 7 | 6 passed | 1 failed

Segmentation fault (core dumped)
Valgrind output on debug ``` sh ==45706== Memcheck, a memory error detector ==45706== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==45706== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==45706== Command: ./bin/LeggedOdometryiSAM2UnitTests ==45706== Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 Configured estimator successful [2021-07-29 19:00:09.907] [thread: 45706] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. [LeggedOdometry::updateKinematics] Initialized LeggedOdometry. ==45706== Conditional jump or move depends on uninitialised value(s) ==45706== at 0x4AAD660: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:211) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== by 0x1200B6: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:901) ==45706== ==45706== Conditional jump or move depends on uninitialised value(s) ==45706== at 0x4AAD66A: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:211) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== by 0x1200B6: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:901) ==45706== ==45706== Conditional jump or move depends on uninitialised value(s) ==45706== at 0x4AAD6A7: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:217) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== by 0x1200B6: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree, std::_Select1st >, std::less, std::allocator > > const&, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:901) ==45706== ==45706== Conditional jump or move depends on uninitialised value(s) ==45706== at 0x4F8816B: std::__cxx11::basic_string, std::allocator >::_S_copy_chars(char*, char*, char*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28) ==45706== by 0x4AAD707: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:225) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== ==45706== Conditional jump or move depends on uninitialised value(s) ==45706== at 0x4F88170: std::__cxx11::basic_string, std::allocator >::_S_copy_chars(char*, char*, char*) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28) ==45706== by 0x4AAD707: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:225) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== ==45706== Use of uninitialised value of size 8 ==45706== at 0x4F87E6B: std::__cxx11::basic_string, std::allocator >::_M_set_length(unsigned long) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28) ==45706== by 0x4AAD71A: void std::__cxx11::basic_string, std::allocator >::_M_construct(char*, char*, std::forward_iterator_tag) (basic_string.tcc:232) ==45706== by 0x121C4F: BipedalLocomotion::Contacts::ContactBase::ContactBase(BipedalLocomotion::Contacts::ContactBase const&) (Contact.h:41) ==45706== by 0x121CBA: BipedalLocomotion::Contacts::EstimatedContact::EstimatedContact(BipedalLocomotion::Contacts::EstimatedContact const&) (Contact.h:91) ==45706== by 0x127910: std::pair::pair(std::pair const&) (stl_pair.h:303) ==45706== by 0x12795E: void __gnu_cxx::new_allocator > >::construct, std::pair const&>(std::pair*, std::pair const&) (new_allocator.h:147) ==45706== by 0x127460: void std::allocator_traits > > >::construct, std::pair const&>(std::allocator > >&, std::pair*, std::pair const&) (alloc_traits.h:484) ==45706== by 0x126C55: void std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_construct_node const&>(std::_Rb_tree_node >*, std::pair const&) (stl_tree.h:614) ==45706== by 0x125D1B: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_create_node const&>(std::pair const&) (stl_tree.h:631) ==45706== by 0x124DDA: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node::operator() const&>(std::pair const&) const (stl_tree.h:548) ==45706== by 0x123869: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_clone_node, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:658) ==45706== by 0x122239: std::_Rb_tree_node >* std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_M_copy, std::_Select1st >, std::less, std::allocator > >::_Alloc_node>(std::_Rb_tree_node > const*, std::_Rb_tree_node_base*, std::_Rb_tree, std::_Select1st >, std::less, std::allocator > >::_Alloc_node&) (stl_tree.h:1875) ==45706== ==45706== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LeggedOdometryiSAM2UnitTests is a Catch v2.11.3 host application. Run with -? for options ------------------------------------------------------------------------------- Legged Odometry + iSAM2 Fixed Lag Smoothing ------------------------------------------------------------------------------- /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:109 ............................................................................... /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:109: FAILED: {Unknown expression after the reported line} due to a fatal error condition: SIGSEGV - Segmentation violation signal =============================================================================== test cases: 1 | 1 failed assertions: 7 | 6 passed | 1 failed ==45706== ==45706== Process terminating with default action of signal 11 (SIGSEGV) ==45706== at 0x5088169: raise (raise.c:46) ==45706== by 0x4A40A5B: Catch::FatalConditionHandler::handleSignal(int) (catch.hpp:10784) ==45706== by 0x508820F: ??? (in /usr/lib/x86_64-linux-gnu/libc-2.31.so) ==45706== by 0x11F721: Eigen::DenseBase >::DenseBase() (DenseBase.h:592) ==45706== ==45706== HEAP SUMMARY: ==45706== in use at exit: 19,084,551 bytes in 110,209 blocks ==45706== total heap usage: 165,935 allocs, 55,726 frees, 29,582,182 bytes allocated ==45706== ==45706== LEAK SUMMARY: ==45706== definitely lost: 0 bytes in 0 blocks ==45706== indirectly lost: 0 bytes in 0 blocks ==45706== possibly lost: 773,952 bytes in 20 blocks ==45706== still reachable: 18,310,599 bytes in 110,189 blocks ==45706== suppressed: 0 bytes in 0 blocks ==45706== Rerun with --leak-check=full to see details of leaked memory ==45706== ==45706== Use --track-origins=yes to see where uninitialised values come from ==45706== For lists of detected and suppressed errors, rerun with: -s ==45706== ERROR SUMMARY: 627492 errors from 6 contexts (suppressed: 0 from 0) Segmentation fault (core dumped) ```
GiulioRomualdi commented 2 years ago

I would suggest you to run the test with gdb

prashanthr05 commented 2 years ago
GDB output for InvariantEKFBaseEstimator ``` sh gdb ./bin/EKFOdometryiSAM2UnitTests GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./bin/EKFOdometryiSAM2UnitTests... (gdb) run Starting program: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/bin/EKFOdometryiSAM2UnitTests [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 Configured estimator successful [2021-07-30 09:00:21.895] [thread: 6816] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. double free or corruption (out) Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) where #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff7602859 in __GI_abort () at abort.c:79 #2 0x00007ffff766d3ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7797285 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #3 0x00007ffff767547c in malloc_printerr (str=str@entry=0x7ffff7799670 "double free or corruption (out)") at malloc.c:5347 #4 0x00007ffff7677120 in _int_free (av=0x7ffff77c8b80 , p=0x5555556a61d0, have_lock=) at malloc.c:4314 #5 0x00007ffff7c4a199 in BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::calcLc(BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState const&, BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::SkewSymContainter const&, bool const&, Eigen::Matrix&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #6 0x00007ffff7c4efe2 in BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements const&, double const&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #7 0x00007ffff7c2385b in BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #8 0x0000555555563f3b in ____C_A_T_C_H____T_E_S_T____0 () at /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp:335 #9 0x00007ffff7e816ee in Catch::TestInvokerAsFunction::invoke (this=0x55555559eee0) at /usr/local/include/catch2/catch.hpp:14065 #10 0x00007ffff7e80ce1 in Catch::TestCase::invoke (this=0x5555555a62c0) at /usr/local/include/catch2/catch.hpp:13958 #11 0x00007ffff7e7af90 in Catch::RunContext::invokeActiveTestCase (this=0x7fffffffc390) at /usr/local/include/catch2/catch.hpp:12819 #12 0x00007ffff7e7acc3 in Catch::RunContext::runCurrentTest (this=0x7fffffffc390, redirectedCout="", redirectedCerr="") at /usr/local/include/catch2/catch.hpp:12792 #13 0x00007ffff7e796e9 in Catch::RunContext::runTest (this=0x7fffffffc390, testCase=...) at /usr/local/include/catch2/catch.hpp:12553 #14 0x00007ffff7e7c94a in Catch::(anonymous namespace)::TestGroup::execute (this=0x7fffffffc380) at /usr/local/include/catch2/catch.hpp:13147 #15 0x00007ffff7e7dd8b in Catch::Session::runInternal (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13353 #16 0x00007ffff7e7da81 in Catch::Session::run (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13309 #17 0x00007ffff7ebc62b in Catch::Session::run (this=0x7fffffffc670, argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:13031 #18 0x00007ffff7e93e56 in main (argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:17185 #19 0x00007ffff76040b3 in __libc_start_main (main=0x7ffff7e93dfd , argc=1, argv=0x7fffffffc908, init=, fini=, rtld_fini=, stack_end=0x7fffffffc8f8) at ../csu/libc-start.c:308 #20 0x000055555555cdce in _start () ```
GDB output for LeggedOdometry ``` sh gdb ./bin/LeggedOdometryiSAM2UnitTests GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./bin/LeggedOdometryiSAM2UnitTests... (gdb) run Starting program: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/bin/LeggedOdometryiSAM2UnitTests [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 Configured estimator successful [2021-07-30 09:03:53.887] [thread: 7073] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. [LeggedOdometry::updateKinematics] Initialized LeggedOdometry. Iter: 0 ============ double free or corruption (out) Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) where #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff7602859 in __GI_abort () at abort.c:79 #2 0x00007ffff766d3ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff7797285 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #3 0x00007ffff767547c in malloc_printerr (str=str@entry=0x7ffff7799670 "double free or corruption (out)") at malloc.c:5347 #4 0x00007ffff7677120 in _int_free (av=0x7ffff77c8b80 , p=0x5555556b90d0, have_lock=) at malloc.c:4314 #5 0x00007ffff7c6e360 in void Eigen::internal::call_dense_assignment_loop, Eigen::CwiseBinaryOp, Eigen::Product >, Eigen::Matrix, 0>, Eigen::Matrix, 0> const, Eigen::Matrix const>, Eigen::internal::assign_op >(Eigen::Matrix&, Eigen::CwiseBinaryOp, Eigen::Product >, Eigen::Matrix, 0>, Eigen::Matrix, 0> const, Eigen::Matrix const> const&, Eigen::internal::assign_op const&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #6 0x00007ffff7c68470 in BipedalLocomotion::Estimators::LeggedOdometry::Impl::computeBaseVelocityUsingAllFixedFrames(BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState const&, BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements&, BipedalLocomotion::Estimators::FloatingBaseEstimator::ModelComputations&, BipedalLocomotion::Estimators::FloatingBaseEstimators::Output&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #7 0x00007ffff7c69688 in BipedalLocomotion::Estimators::LeggedOdometry::Impl::updateInternalState(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements&, BipedalLocomotion::Estimators::FloatingBaseEstimator::ModelComputations&, BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState&, BipedalLocomotion::Estimators::FloatingBaseEstimators::Output&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #8 0x00007ffff7c69f38 in BipedalLocomotion::Estimators::LeggedOdometry::updateKinematics(BipedalLocomotion::Estimators::FloatingBaseEstimators::Measurements&, double const&) () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #9 0x00007ffff7c23973 in BipedalLocomotion::Estimators::FloatingBaseEstimator::advance() () from /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.2.0 #10 0x00005555555611c6 in ____C_A_T_C_H____T_E_S_T____0 () at /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:282 #11 0x00007ffff7e816ee in Catch::TestInvokerAsFunction::invoke (this=0x555555597ee0) at /usr/local/include/catch2/catch.hpp:14065 #12 0x00007ffff7e80ce1 in Catch::TestCase::invoke (this=0x55555559f2b0) at /usr/local/include/catch2/catch.hpp:13958 #13 0x00007ffff7e7af90 in Catch::RunContext::invokeActiveTestCase (this=0x7fffffffc390) at /usr/local/include/catch2/catch.hpp:12819 #14 0x00007ffff7e7acc3 in Catch::RunContext::runCurrentTest (this=0x7fffffffc390, redirectedCout="", redirectedCerr="") at /usr/local/include/catch2/catch.hpp:12792 #15 0x00007ffff7e796e9 in Catch::RunContext::runTest (this=0x7fffffffc390, testCase=...) at /usr/local/include/catch2/catch.hpp:12553 #16 0x00007ffff7e7c94a in Catch::(anonymous namespace)::TestGroup::execute (this=0x7fffffffc380) at /usr/local/include/catch2/catch.hpp:13147 #17 0x00007ffff7e7dd8b in Catch::Session::runInternal (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13353 #18 0x00007ffff7e7da81 in Catch::Session::run (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13309 #19 0x00007ffff7ebc62b in Catch::Session::run (this=0x7fffffffc670, argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:13031 #20 0x00007ffff7e93e56 in main (argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:17185 #21 0x00007ffff76040b3 in __libc_start_main (main=0x7ffff7e93dfd , argc=1, argv=0x7fffffffc908, init=, fini=, rtld_fini=, stack_end=0x7fffffffc8f8) at ../csu/libc-start.c:308 #22 0x000055555555cdae in _start () ```

Both the failures seem unrelated to getOutput() calls, instead hits an Eigen related method in internal implementation of the filters.

GiulioRomualdi commented 2 years ago

Is blf compiled in debug?

prashanthr05 commented 2 years ago

Is blf compiled in debug?

Ah, I had missed that!

GDB output for InvariantEKFBaseEstimator with BLF compiled in debug ``` sh gdb ./bin/EKFOdometryiSAM2UnitTests GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./bin/EKFOdometryiSAM2UnitTests... (gdb) run Starting program: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/bin/EKFOdometryiSAM2UnitTests [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 [2021-07-30 10:21:58.389] [thread: 13123] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'acceleration_due_to_gravity' not found. Configured estimator successful [2021-07-30 10:21:58.390] [thread: 13123] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. double free or corruption (out) Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) where #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff6ea5859 in __GI_abort () at abort.c:79 #2 0x00007ffff6f103ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff703a285 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #3 0x00007ffff6f1847c in malloc_printerr ( str=str@entry=0x7ffff703c670 "double free or corruption (out)") at malloc.c:5347 #4 0x00007ffff6f1a120 in _int_free (av=0x7ffff706bb80 , p=0x5555556a61d0, have_lock=) at malloc.c:4314 #5 0x00007ffff7a75004 in Eigen::internal::aligned_free (ptr=0x5555556a61e0) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:177 #6 0x00007ffff7a80318 in Eigen::internal::conditional_aligned_free (ptr=0x5555556a61e0) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:230 #7 0x00007ffff7a7a725 in Eigen::internal::conditional_aligned_delete_auto ( ptr=0x5555556a61e0, size=225) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:416 #8 0x00007ffff7aec14f in Eigen::DenseStorage::~DenseStorage ( this=0x7fffffffab20, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:391 #9 0x00007ffff7aeae60 in Eigen::PlainObjectBase >::~PlainObjectBase (this=0x7fffffffab20, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:98 #10 0x00007ffff7aeae80 in Eigen::Matrix::~Matrix (this=0x7fffffffab20, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:178 #11 0x00007ffff7ae9b5f in BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::Impl::calcLc ( this=0x5555556ea360, X=..., skew=..., estimateBias=@0x5555556e96b8: false, Lc=...) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/InvariantEKFBaseEstimator.cpp:918 #12 0x00007ffff7ae48fc in BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::predictState ( this=0x5555556e95c0, meas=..., dt=@0x5555556ea298: 0.01) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/InvariantEKFBaseEstimator.cpp:360 #13 0x00007ffff7a6ddb9 in BipedalLocomotion::Estimators::FloatingBaseEstimator::advance ( this=0x5555556e95c0) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/FloatingBaseEstimator.cpp:141 #14 0x0000555555563f3b in ____C_A_T_C_H____T_E_S_T____0 () at /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp:335 #15 0x00007ffff7e816ee in Catch::TestInvokerAsFunction::invoke (this=0x55555559eee0) at /usr/local/include/catch2/catch.hpp:14065 #16 0x00007ffff7e80ce1 in Catch::TestCase::invoke (this=0x5555555a62c0) at /usr/local/include/catch2/catch.hpp:13958 #17 0x00007ffff7e7af90 in Catch::RunContext::invokeActiveTestCase (this=0x7fffffffc390) at /usr/local/include/catch2/catch.hpp:12819 #18 0x00007ffff7e7acc3 in Catch::RunContext::runCurrentTest (this=0x7fffffffc390, redirectedCout="", redirectedCerr="") at /usr/local/include/catch2/catch.hpp:12792 #19 0x00007ffff7e796e9 in Catch::RunContext::runTest (this=0x7fffffffc390, testCase=...) at /usr/local/include/catch2/catch.hpp:12553 #20 0x00007ffff7e7c94a in Catch::(anonymous namespace)::TestGroup::execute (this=0x7fffffffc380) at /usr/local/include/catch2/catch.hpp:13147 #21 0x00007ffff7e7dd8b in Catch::Session::runInternal (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13353 #22 0x00007ffff7e7da81 in Catch::Session::run (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13309 #23 0x00007ffff7ebc62b in Catch::Session::run (this=0x7fffffffc670, argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:13031 --Type for more, q to quit, c to continue without paging-- #24 0x00007ffff7e93e56 in main (argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:17185 #25 0x00007ffff6ea70b3 in __libc_start_main (main=0x7ffff7e93dfd , argc=1, argv=0x7fffffffc908, init=, fini=, rtld_fini=, stack_end=0x7fffffffc8f8) at ../csu/libc-start.c:308 #26 0x000055555555cdce in _start () ```

relates to the line https://github.com/dic-iit/bipedal-locomotion-framework/blob/a2cda7d5120f8af38747978fefd06e71ce704e29/src/Estimators/src/InvariantEKFBaseEstimator.cpp#L918 associated to the variable Eigen::MatrixXd AdjX declared locally within the method.

GDB output for LeggedOdometry with BLF compiled in debug ``` sh gdb ./bin/LeggedOdometryiSAM2UnitTests GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./bin/LeggedOdometryiSAM2UnitTests... (gdb) run Starting program: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/bin/LeggedOdometryiSAM2UnitTests [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 [2021-07-30 10:25:00.061] [thread: 13301] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'vel_computation_method' not found. [2021-07-30 10:25:00.062] [thread: 13301] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'wLin' not found. [2021-07-30 10:25:00.062] [thread: 13301] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'wAng' not found. [2021-07-30 10:25:00.062] [thread: 13301] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'wJVel' not found. [2021-07-30 10:25:00.062] [thread: 13301] [blf] [debug] [StdImplementation::getParameterPrivate] Parameter named 'reg' not found. Configured estimator successful [2021-07-30 10:25:00.062] [thread: 13301] [blf] [info] [ContactDetector::initialize] Contact detector initialization is successful. Configured contact detector successful. [LeggedOdometry::updateKinematics] Initialized LeggedOdometry. Iter: 0 ============ double free or corruption (out) Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) where #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff6ea5859 in __GI_abort () at abort.c:79 #2 0x00007ffff6f103ee in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff703a285 "%s\n") at ../sysdeps/posix/libc_fatal.c:155 #3 0x00007ffff6f1847c in malloc_printerr ( str=str@entry=0x7ffff703c670 "double free or corruption (out)") at malloc.c:5347 #4 0x00007ffff6f1a120 in _int_free (av=0x7ffff706bb80 , p=0x5555556d9070, have_lock=) at malloc.c:4314 #5 0x00007ffff7a75004 in Eigen::internal::aligned_free (ptr=0x5555556d9080) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:177 #6 0x00007ffff7a80318 in Eigen::internal::conditional_aligned_free (ptr=0x5555556d9080) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:230 #7 0x00007ffff7a7a725 in Eigen::internal::conditional_aligned_delete_auto ( ptr=0x5555556d9080, size=6) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:416 #8 0x00007ffff7a7719f in Eigen::DenseStorage::~DenseStorage ( this=0x7fffffff99b0, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:542 #9 0x00007ffff7a754a2 in Eigen::PlainObjectBase >::~PlainObjectBase (this=0x7fffffff99b0, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:98 #10 0x00007ffff7a754c2 in Eigen::Matrix::~Matrix (this=0x7fffffff99b0, __in_chrg=) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:178 #11 0x00007ffff7b66993 in Eigen::internal::call_assignment, -1, 1, false>, Eigen::Product, Eigen::Matrix const>, Eigen::Matrix, 0>, Eigen::internal::assign_op > (dst=..., src=..., func=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:796 #12 0x00007ffff7b653b8 in Eigen::internal::call_assignment, -1, 1, false>, Eigen::Product, Eigen::Matrix const>, Eigen::Matrix, 0> > (dst=..., src=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782 #13 0x00007ffff7b6328f in Eigen::MatrixBase, -1, 1, false> >::operator=, Eigen::Matrix const>, Eigen::Matrix, 0> > ( this=0x7fffffff9bf0, other=...) at /usr/include/eigen3/Eigen/src/Core/Assign.h:66 #14 0x00007ffff7b602f2 in BipedalLocomotion::Estimators::LeggedOdometry::Impl::computeBaseVelocityUsingAllFixedFrames (this=0x5555556cb8f0, state=..., meas=..., modelComp=..., out=...) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/LeggedOdometry.cpp:754 #15 0x00007ffff7b5e814 in BipedalLocomotion::Estimators::LeggedOdometry::Impl::updateInternalState (this=0x5555556cb8f0, meas=..., modelComp=..., state=..., out=...) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/LeggedOdometry.cpp:528 #16 0x00007ffff7b60cfc in BipedalLocomotion::Estimators::LeggedOdometry::updateKinematics ( this=0x7fffffffafe0, meas=...) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/LeggedOdometry.cpp:848 #17 0x00007ffff7a6de4b in BipedalLocomotion::Estimators::FloatingBaseEstimator::advance ( this=0x7fffffffafe0) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/FloatingBaseEstimator.cpp:146 #18 0x00005555555611c6 in ____C_A_T_C_H____T_E_S_T____0 () at /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/LeggedOdometryiSAM2.cpp:282 --Type for more, q to quit, c to continue without paging-- #19 0x00007ffff7e816ee in Catch::TestInvokerAsFunction::invoke (this=0x555555597ee0) at /usr/local/include/catch2/catch.hpp:14065 #20 0x00007ffff7e80ce1 in Catch::TestCase::invoke (this=0x55555559f2b0) at /usr/local/include/catch2/catch.hpp:13958 #21 0x00007ffff7e7af90 in Catch::RunContext::invokeActiveTestCase (this=0x7fffffffc390) at /usr/local/include/catch2/catch.hpp:12819 #22 0x00007ffff7e7acc3 in Catch::RunContext::runCurrentTest (this=0x7fffffffc390, redirectedCout="", redirectedCerr="") at /usr/local/include/catch2/catch.hpp:12792 #23 0x00007ffff7e796e9 in Catch::RunContext::runTest (this=0x7fffffffc390, testCase=...) at /usr/local/include/catch2/catch.hpp:12553 #24 0x00007ffff7e7c94a in Catch::(anonymous namespace)::TestGroup::execute (this=0x7fffffffc380) at /usr/local/include/catch2/catch.hpp:13147 #25 0x00007ffff7e7dd8b in Catch::Session::runInternal (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13353 #26 0x00007ffff7e7da81 in Catch::Session::run (this=0x7fffffffc670) at /usr/local/include/catch2/catch.hpp:13309 #27 0x00007ffff7ebc62b in Catch::Session::run (this=0x7fffffffc670, argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:13031 #28 0x00007ffff7e93e56 in main (argc=1, argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:17185 #29 0x00007ffff6ea70b3 in __libc_start_main (main=0x7ffff7e93dfd , argc=1, argv=0x7fffffffc908, init=, fini=, rtld_fini=, stack_end=0x7fffffffc8f8) at ../csu/libc-start.c:308 #30 0x000055555555cdae in _start () ```

relates to the line https://github.com/dic-iit/bipedal-locomotion-framework/blob/a2cda7d5120f8af38747978fefd06e71ce704e29/src/Estimators/src/LeggedOdometry.cpp#L754 associated to the variable (Eigen::VectorXd y) declared locally within the method.

prashanthr05 commented 2 years ago

I randomly faced a new error on gdb segfault backtrace related to unaligned arrays memory allocation.

Note that this error is different from the previous errors. (I don't understand why, though.)

GDB output InvariantEKFBaseEstimator ``` sh gdb ./bin/EKFOdometryiSAM2UnitTests GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./bin/EKFOdometryiSAM2UnitTests... (gdb) run Starting program: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/bin/EKFOdometryiSAM2UnitTests [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Model path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/model.urdf Matfile path: /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/data/sync-walk-est.mat Opening mat file successful. Loading model successful. r_sole position in the world: -0.0161299 l_sole position in the world: -0.016674 EKFOdometryiSAM2UnitTests: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array::plain_array() [with T = double; int Size = 4; int MatrixOrArrayOptions = 0]: Assertion `(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed. Program received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007ffff6ea5859 in __GI_abort () at abort.c:79 #2 0x00007ffff6ea5729 in __assert_fail_base ( fmt=0x7ffff703b588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55555559baf0 "(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && \"this assertion is explained here: \" \"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.htm"..., file=0x55555559b1c8 "/usr/include/eigen3/Eigen/src/Core/DenseStorage.h", line=128, function=) at assert.c:92 #3 0x00007ffff6eb6f36 in __GI___assert_fail ( assertion=0x55555559baf0 "(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && \"this assertion is explained here: \" \"http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.htm"..., file=0x55555559b1c8 "/usr/include/eigen3/Eigen/src/Core/DenseStorage.h", line=128, function=0x55555559ba60 "Eigen::internal::plain_array::plain_array() [with T = double; int Size = 4; int MatrixOrArrayOptions = 0]") at assert.c:101 #4 0x0000555555592193 in Eigen::internal::plain_array::plain_array ( this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128 #5 0x0000555555590588 in Eigen::DenseStorage::DenseStorage ( this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:187 #6 0x000055555558e4a2 in Eigen::PlainObjectBase >::PlainObjectBase (this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:484 #7 0x000055555558bace in Eigen::Matrix::Matrix (this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:259 #8 0x00005555555893fe in Eigen::Quaternion::Quaternion (this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:250 #9 0x00005555555870f6 in BipedalLocomotion::Estimators::FloatingBaseEstimators::InternalState::InternalState (this=0x7fffffffb250) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/include/BipedalLocomotion/FloatingBaseEstimators/FloatingBaseEstimatorIO.h:29 #10 0x00007ffff7a6d2e3 in BipedalLocomotion::Estimators::FloatingBaseEstimator::FloatingBaseEstimator (this=0x7fffffffafc0) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/FloatingBaseEstimator.cpp:17 #11 0x00007ffff7ae3814 in BipedalLocomotion::Estimators::InvariantEKFBaseEstimator::InvariantEKFBaseEstimator (this=0x7fffffffafc0) at /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/src/Estimators/src/InvariantEKFBaseEstimator.cpp:197 #12 0x00005555555841cc in ____C_A_T_C_H____T_E_S_T____0 () at /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp:266 #13 0x00007ffff7e816ee in Catch::TestInvokerAsFunction::invoke (this=0x5555555beee0) at /usr/local/include/catch2/catch.hpp:14065 #14 0x00007ffff7e80ce1 in Catch::TestCase::invoke (this=0x5555555c62c0) at /usr/local/include/catch2/catch.hpp:13958 #15 0x00007ffff7e7af90 in Catch::RunContext::invokeActiveTestCase (this=0x7fffffffc370) at /usr/local/include/catch2/catch.hpp:12819 #16 0x00007ffff7e7acc3 in Catch::RunContext::runCurrentTest (this=0x7fffffffc370, redirectedCout="", redirectedCerr="") at /usr/local/include/catch2/catch.hpp:12792 #17 0x00007ffff7e796e9 in Catch::RunContext::runTest (this=0x7fffffffc370, testCase=...) at /usr/local/include/catch2/catch.hpp:12553 #18 0x00007ffff7e7c94a in Catch::(anonymous namespace)::TestGroup::execute (this=0x7fffffffc360) at /usr/local/include/catch2/catch.hpp:13147 #19 0x00007ffff7e7dd8b in Catch::Session::runInternal (this=0x7fffffffc650) at /usr/local/include/catch2/catch.hpp:13353 --Type for more, q to quit, c to continue without paging-- #20 0x00007ffff7e7da81 in Catch::Session::run (this=0x7fffffffc650) at /usr/local/include/catch2/catch.hpp:13309 #21 0x00007ffff7ebc62b in Catch::Session::run (this=0x7fffffffc650, argc=1, argv=0x7fffffffc8e8) at /usr/local/include/catch2/catch.hpp:13031 #22 0x00007ffff7e93e56 in main (argc=1, argv=0x7fffffffc8e8) at /usr/local/include/catch2/catch.hpp:17185 #23 0x00007ffff6ea70b3 in __libc_start_main (main=0x7ffff7e93dfd , argc=1, argv=0x7fffffffc8e8, init=, fini=, rtld_fini=, stack_end=0x7fffffffc8d8) at ../csu/libc-start.c:308 #24 0x000055555557ddae in _start () ```

It's strange that doing the following changes fixes all the problem. (Eigen docs say that this shouldn't technically happen for C++17 standard since everything is taken care of by the compiler http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html).

git diff
diff --git a/src/Estimators/include/BipedalLocomotion/FloatingBaseEstimators/FloatingBaseEstimatorIO.h b/src/Estimators/include/BipedalLocomotion/FloatingBaseEstimators/FloatingBaseEstimatorIO.h
index 9ea8dda..1dfa747 100755
--- a/src/Estimators/include/BipedalLocomotion/FloatingBaseEstimators/FloatingBaseEstimatorIO.h
+++ b/src/Estimators/include/BipedalLocomotion/FloatingBaseEstimators/FloatingBaseEstimatorIO.h
@@ -28,17 +28,17 @@ namespace FloatingBaseEstimators
 */
 struct InternalState
 {
-    Eigen::Quaterniond imuOrientation; /**< Orientation of the base link IMU in the inertial frame (as a quaternion w,x,y,z) */
-    Eigen::Vector3d imuPosition;   /**< Position of the base link IMU in the inertial frame */
-    Eigen::Vector3d imuLinearVelocity; /**< linear part of the mixed-velocity representation of the IMU with respect to the inertial frame */
-    Eigen::Quaterniond lContactFrameOrientation; /**< Orientation of the left foot contact frame in the inertial frame (as a quaternion w,x,y,z) */
-    Eigen::Vector3d lContactFramePosition; /**< Position of the left foot contact frame in the inertial frame */
-    Eigen::Quaterniond rContactFrameOrientation; /**< Orientation of the right foot contact frame in the inertial frame (as a quaternion w,x,y,z) */
-    Eigen::Vector3d rContactFramePosition; /**< Position of the right foot contact frame in the inertial frame*/
-    Eigen::Vector3d accelerometerBias; /**< Bias of the accelerometer expressed in the IMU frame */
-    Eigen::Vector3d gyroscopeBias; /**< Bias of the gyroscope expressed in the IMU frame */
+    Eigen::Quaternion<double,Eigen::DontAlign> imuOrientation; /**< Orientation of the base link IMU in the inertial frame (as a quaternion w,x,y,z) */
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> imuPosition;   /**< Position of the base link IMU in the inertial frame */
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> imuLinearVelocity; /**< linear part of the mixed-velocity representation of the IMU with respect to the inertial frame */
+    Eigen::Quaternion<double,Eigen::DontAlign> lContactFrameOrientation; /**< Orientation of the left foot contact frame in the inertial frame (as a quaternion w,x,y,z) */
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> lContactFramePosition; /**< Position of the left foot contact frame in the inertial frame */
+    Eigen::Quaternion<double,Eigen::DontAlign> rContactFrameOrientation; /**< Orientation of the right foot contact frame in the inertial frame (as a quaternion w,x,y,z) */
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> rContactFramePosition; /**< Position of the right foot contact frame in the inertial frame*/
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> accelerometerBias; /**< Bias of the accelerometer expressed in the IMU frame */
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> gyroscopeBias; /**< Bias of the gyroscope expressed in the IMU frame */

-    Eigen::Vector3d imuAngularVelocity; /**< angular velocity of the IMU with respect to the inertial frame expressed in inertial frame, typically unused for strap-down IMU based EKF implementations*/
+    Eigen::Matrix<double,3,1,Eigen::DontAlign> imuAngularVelocity; /**< angular velocity of the IMU with respect to the inertial frame expressed in inertial frame, typically unused for strap-down IMU based EKF implementations*/
     std::map<int, BipedalLocomotion::Contacts::EstimatedContact> supportFrameData; /**< estimated contacts */
     std::map<int, BipedalLocomotion::Contacts::EstimatedLandmark> landmarkData; /**< estimated landmarks */
 };
diff --git a/src/Estimators/src/InvariantEKFBaseEstimator.cpp b/src/Estimators/src/InvariantEKFBaseEstimator.cpp
index 5b4d80f..fc4acd5 100644
--- a/src/Estimators/src/InvariantEKFBaseEstimator.cpp
+++ b/src/Estimators/src/InvariantEKFBaseEstimator.cpp
@@ -543,6 +543,9 @@ bool InvariantEKFBaseEstimator::updateKinematics(FloatingBaseEstimators::Measure
         m_pimpl->extractStateVar(m_pimpl->m_P,m_options.imuBiasEstimationEnabled, m_stateStdDev); // unwrap state covariance matrix diagonal
     }

+    m_state.imuOrientation.normalize();
+    m_state.lContactFrameOrientation.normalize();
+    m_state.rContactFrameOrientation.normalize();
     // should we handle removing old contacts and adding new contacts? or let it be as it is.
     return true;
 }

Without these changes, I also sometimes come across errors related to operator= for map container of contacts.

cc @traversaro would you have any inputs regarding this?

traversaro commented 2 years ago

Which compiler version are you using? Which Eigen version are you using? We had some similar misterious problems in Danieli.

prashanthr05 commented 2 years ago

Which compiler version are you using? Which Eigen version are you using? We had some similar misterious problems in Danieli.

gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 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.

pkg-config --modversion eigen3
3.3.7
traversaro commented 2 years ago

Are you sure that all compilation units involved in this are indeed compiled with C++17? Can you try to compile from a clean build with VERBOSE=1 make so we can check this? Gtsam is compiled with an external Eigen?

traversaro commented 2 years ago

(is the same thing happening on GitHub Actions?)

prashanthr05 commented 2 years ago

Are you sure that all compilation units involved in this are indeed compiled with C++17? Can you try to compile from a clean build with VERBOSE=1 make so we can check this? Gtsam is compiled with an external Eigen?

Pasting the compilation log of just related software. Looks like GTSAM has been compiled with it's own copy of an external Eigen. This can be modified with USE_SYSTEM_EIGEN flag in gtsam. I am currently trying to compile GTSAM using system eigen to understand if this was the culprit propagating the problems.

[ 85%] Building CXX object src/Estimators/tests/CMakeFiles/EKFOdometryiSAM2UnitTests.dir/EKFOdometryiSAM2.cpp.o
cd /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/src/Estimators/tests && /usr/bin/c++  -DCATCH_CONFIG_DISABLE_MATCHERS -DCATCH_CONFIG_FAST_COMPILE -DSPDLOG_COMPILED_LIB -D_USE_MATH_DEFINES -Dqh_QHpointer -DvtkRenderingCore_AUTOINIT="3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2)" -I/usr/include/vtk-7.1 -I/usr/include/freetype2 -I/home/pramadoss/iit_ws/prashanthr05/kindyn-vio/build/src/Estimators/tests -isystem /home/pramadoss/iit_ws/dic-iit/bipedal-locomotion-framework/install/include -isystem /home/pramadoss/iit_ws/robotology-superbuild/build/install/include -isystem /usr/include/eigen3 -isystem /home/pramadoss/iit_ws/scrapyard/manif/install/include -isystem /home/pramadoss/iit_ws/scrapyard/gtsam/install/include/gtsam/3rdparty/metis -isystem /home/pramadoss/iit_ws/scrapyard/gtsam/install/include/gtsam/3rdparty/SuiteSparse_config -isystem /home/pramadoss/iit_ws/scrapyard/gtsam/install/include/gtsam/3rdparty/CCOLAMD -isystem /home/pramadoss/iit_ws/scrapyard/gtsam/install/include -isystem /home/pramadoss/iit_ws/scrapyard/gtsam/install/include/gtsam/3rdparty/Eigen -isystem /home/pramadoss/iit_ws/dic-iit/matio-cpp/install/include  -O3 -DNDEBUG   -march=native -std=gnu++17 -o CMakeFiles/EKFOdometryiSAM2UnitTests.dir/EKFOdometryiSAM2.cpp.o -c /home/pramadoss/iit_ws/prashanthr05/kindyn-vio/src/Estimators/tests/EKFOdometryiSAM2.cpp
[ 90%] Linking CXX executable ../../../bin/EKFOdometryiSAM2UnitTests
prashanthr05 commented 2 years ago

(is the same thing happening on GitHub Actions?)

Looks like uncommenting the line with call to getOutput() method results in segfaults also with the tests. (see https://github.com/dic-iit/kindyn-vio/runs/3219546221?check_suite_focus=true)

Connecting the dots, the getOutput() method intrinsically contains a call to the copy assignment operator of the InternalState struct which contains Eigen variables with fixed size allocators.

prashanthr05 commented 2 years ago

Pasting the compilation log of just related software. Looks like GTSAM has been compiled with it's own copy of an external Eigen. This can be modified with USE_SYSTEM_EIGEN flag in gtsam. I am currently trying to compile GTSAM using system eigen to understand if this was the culprit propagating the problems.

GTSAM compiled and installed with USE_SYSTEM_EIGEN does not solve the issue.

However, since currently these tests were not using GTSAM libraries already and was only setting up the testing of BLF estimators, I removed GTSAM dependency from the project completely and compiled with a new build. After this, both legged odometry and the EKF tests do not end in a Eigen related segmentation fault.

(P.S. except with the InvariantEKFBaseEstimator we need to add a few lines of code (see https://github.com/dic-iit/kindyn-vio/issues/25#issuecomment-890868801)

+    m_state.imuOrientation.normalize();
+    m_state.lContactFrameOrientation.normalize();
+    m_state.rContactFrameOrientation.normalize();

which is unrelated to this issue and mainly due to manif assertions)

prashanthr05 commented 2 years ago

GTSAM configuration flag GTSAM_COMPILE_FEATURES_PUBLIC was set to cxx_std_11. Now I will try to add GTSAM dependency by setting this flag to cxx_std_17.

prashanthr05 commented 2 years ago

GTSAM configuration flag GTSAM_COMPILE_FEATURES_PUBLIC was set to cxx_std_11. Now I will try to add GTSAM dependency by setting this flag to cxx_std_17.

I am not able to compile GTSAM by setting this flag to cxx_std_17. It results in a boost related build error -.- (Apart form this, GTSAM devs in most related issues recommend to use GTSAM bundled Eigen (https://github.com/borglab/gtsam/issues/620) instead of using system eigen).

Here in this PR in GTSAM, https://github.com/borglab/gtsam/pull/27, it says that cxx11 is propagated to all dependent projects.

Linking this issue since it contains some useful information: https://github.com/borglab/gtsam/issues/21

traversaro commented 2 years ago

Can you try to compile gtsam with GTSAM_BUILD_WITH_MARCH_NATIVE set to OFF?

traversaro commented 2 years ago

I am not able to compile GTSAM by setting this flag to cxx_std_17. It results in a boost related build error -.-

Which error?

prashanthr05 commented 2 years ago

I am not able to compile GTSAM by setting this flag to cxx_std_17. It results in a boost related build error -.-

Which error?

GTSAM compile error with `cxx_std_17` ```sh make [ 2%] Built target CppUnitLite [ 21%] Built target metis-gtsam Scanning dependencies of target gtsam [ 21%] Building C object gtsam/CMakeFiles/gtsam.dir/3rdparty/CCOLAMD/Source/ccolamd.c.o [ 21%] Building C object gtsam/CMakeFiles/gtsam.dir/3rdparty/SuiteSparse_config/SuiteSparse_config.c.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/DSFVector.cpp.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/Matrix.cpp.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/SymmetricBlockMatrix.cpp.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/Vector.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/VerticalBlockMatrix.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/cholesky.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/debug.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/timing.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/types.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Bundler.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3DS2.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3DS2_Base.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Fisheye.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Unified.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3_S2.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3_S2Stereo.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/CalibratedCamera.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cyclic.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/EssentialMatrix.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Line3.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/OrientedPlane3.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Point2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Point3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Pose2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Pose3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot3M.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SO3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SO4.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SOn.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Similarity3.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SimpleCamera.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/StereoCamera.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/StereoPoint2.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Unit3.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/triangulation.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/BayesTree.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Factor.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Key.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/LabeledSymbol.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Ordering.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Symbol.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/VariableIndex.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/VariableSlots.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicBayesNet.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicBayesTree.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicConditional.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicEliminationTree.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicFactor.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicFactorGraph.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicISAM.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicJunctionTree.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DecisionTreeFactor.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteBayesNet.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteBayesTree.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteConditional.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteEliminationTree.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteFactor.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteFactorGraph.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteJunctionTree.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteKey.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/Potentials.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/Signature.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/ConjugateGradientSolver.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Errors.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianBayesNet.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianBayesTree.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianConditional.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianDensity.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianEliminationTree.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianFactor.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianFactorGraph.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianISAM.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianJunctionTree.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/HessianFactor.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/IterativeSolver.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/JacobianFactor.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/KalmanFilter.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/LossFunctions.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/NoiseModel.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/PCGSolver.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Preconditioner.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Sampler.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Scatter.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphBuilder.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphPreconditioner.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphSolver.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/VectorValues.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/iterative.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/linearExceptions.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/CustomFactor.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/DoglegOptimizer.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/DoglegOptimizerImpl.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/GaussNewtonOptimizer.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2-impl.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2Clique.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2Params.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LevenbergMarquardtOptimizer.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LevenbergMarquardtParams.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LinearContainerFactor.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/Marginals.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearConjugateGradientOptimizer.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearFactor.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearFactorGraph.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearISAM.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearOptimizer.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearOptimizerParams.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/Values.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/MFAS.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/ShonanAveraging.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/ShonanFactor.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/TranslationRecovery.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/EssentialMatrixConstraint.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/FrobeniusFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/InitializePose3.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/OrientedPlane3Factor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/dataset.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/lago.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/AHRSFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/AttitudeFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/CombinedImuFactor.cpp.o In file included from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/3rdparty/Eigen/Eigen/Core:365, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/3rdparty/Eigen/Eigen/Dense:1, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/OptionalJacobian.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:27, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Manifold.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/geometry/BearingRange.h:21, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/geometry/Pose3.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/NavState.h:21, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/ManifoldPreintegration.h:24, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.h:26, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.cpp:23: /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h: In instantiation of ‘struct Eigen::internal::accessors_level’: /usr/include/boost/serialization/split_free.hpp:58:13: required from ‘static void boost::serialization::free_loader::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /usr/include/boost/serialization/split_free.hpp:74:18: required from ‘void boost::serialization::split_free(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:594:17: required from ‘void boost::serialization::serialize(Archive&, Eigen::Matrix&, unsigned int) [with Archive = boost::archive::xml_iarchive; Scalar_ = double; int Rows_ = 3; int Cols_ = 3; int Ops_ = 0; int MaxRows_ = 3; int MaxCols_ = 3]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /usr/include/boost/archive/detail/iserializer.hpp:187:40: [ skipping 21 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/serialization/export.hpp:103:51: required from ‘static void boost::archive::detail::ptr_serialization_support::instantiate() [with Archive = boost::archive::xml_iarchive; Serializable = gtsam::PreintegrationCombinedParams]’ /usr/include/boost/serialization/export.hpp:84:1: required from ‘struct boost::archive::detail::ptr_serialization_support’ /usr/include/boost/archive/detail/register_archive.hpp:25:8: required from ‘struct boost::archive::detail::_ptr_serialization_support’ /usr/include/boost/archive/xml_iarchive.hpp:136:1: required by substitution of ‘template typename boost::archive::detail::_ptr_serialization_support::type boost::archive::detail::instantiate_ptr_serialization(Serializable*, boost::archive::xml_iarchive*, boost::archive::detail::adl_tag) [with Serializable = gtsam::PreintegrationCombinedParams]’ /usr/include/boost/serialization/export.hpp:121:38: required from ‘void boost::archive::detail::extra_detail::guid_initializer::export_guid(mpl_::false_) const [with T = gtsam::PreintegrationCombinedParams; mpl_::false_ = mpl_::bool_]’ /usr/include/boost/serialization/export.hpp:131:9: required from ‘const boost::archive::detail::extra_detail::guid_initializer& boost::archive::detail::extra_detail::guid_initializer::export_guid() const [with T = gtsam::PreintegrationCombinedParams]’ /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.cpp:260:1: required from here /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h:32:54: error: incomplete type ‘Eigen::internal::traits’ used in nested name specifier 32 | enum { has_direct_access = (traits::Flags & DirectAccessBit) ? 1 : 0, | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h:33:53: error: incomplete type ‘Eigen::internal::traits’ used in nested name specifier 33 | has_write_access = (traits::Flags & LvalueBit) ? 1 : 0, | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:1688: gtsam/CMakeFiles/gtsam.dir/navigation/CombinedImuFactor.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:3210: gtsam/CMakeFiles/gtsam.dir/all] Error 2 make: *** [Makefile:163: all] Error 2 ```
traversaro commented 2 years ago

Can you try to compile with C++17 and system Eigen? (This is exactly the problem that we had in CI).

prashanthr05 commented 2 years ago

Compiling with the flags,

results in the same error,

Compile log ``` sh make -j4 [ 2%] Built target CppUnitLite [ 21%] Built target metis-gtsam [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/Matrix.cpp.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/SymmetricBlockMatrix.cpp.o [ 21%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/Vector.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/VerticalBlockMatrix.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/cholesky.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/debug.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/timing.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/base/types.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Bundler.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3DS2.cpp.o [ 24%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3DS2_Base.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Fisheye.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3Unified.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3_S2.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cal3_S2Stereo.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/CalibratedCamera.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Cyclic.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/EssentialMatrix.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Line3.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/OrientedPlane3.cpp.o [ 27%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Point2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Point3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Pose2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Pose3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot2.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Rot3M.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SO3.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SO4.cpp.o [ 29%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SOn.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Similarity3.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/SimpleCamera.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/StereoCamera.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/StereoPoint2.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/Unit3.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/geometry/triangulation.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/BayesTree.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Factor.cpp.o [ 32%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Key.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/LabeledSymbol.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Ordering.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/Symbol.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/VariableIndex.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/inference/VariableSlots.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicBayesNet.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicBayesTree.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicConditional.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicEliminationTree.cpp.o [ 35%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicFactor.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicFactorGraph.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/symbolic/SymbolicISAM.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DecisionTreeFactor.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteBayesNet.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteBayesTree.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteConditional.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteEliminationTree.cpp.o [ 37%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteFactor.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteFactorGraph.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteJunctionTree.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/DiscreteKey.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/Potentials.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/discrete/Signature.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/ConjugateGradientSolver.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Errors.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianBayesNet.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianBayesTree.cpp.o [ 40%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianConditional.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianDensity.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianEliminationTree.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianFactor.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianFactorGraph.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianISAM.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/GaussianJunctionTree.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/HessianFactor.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/IterativeSolver.cpp.o [ 43%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/JacobianFactor.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/KalmanFilter.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/LossFunctions.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/NoiseModel.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/PCGSolver.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Preconditioner.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Sampler.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/Scatter.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphBuilder.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphPreconditioner.cpp.o [ 45%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/SubgraphSolver.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/VectorValues.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/iterative.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/linear/linearExceptions.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/CustomFactor.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/DoglegOptimizer.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/DoglegOptimizerImpl.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/GaussNewtonOptimizer.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2-impl.cpp.o [ 48%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2Clique.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/ISAM2Params.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LevenbergMarquardtOptimizer.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LevenbergMarquardtParams.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/LinearContainerFactor.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/Marginals.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearConjugateGradientOptimizer.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearFactor.cpp.o [ 51%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearFactorGraph.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearISAM.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearOptimizer.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/NonlinearOptimizerParams.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/nonlinear/Values.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/MFAS.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/ShonanAveraging.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/ShonanFactor.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/sfm/TranslationRecovery.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/EssentialMatrixConstraint.cpp.o [ 54%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/FrobeniusFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/InitializePose3.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/OrientedPlane3Factor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/dataset.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/slam/lago.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/AHRSFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/AttitudeFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/CombinedImuFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/GPSFactor.cpp.o [ 56%] Building CXX object gtsam/CMakeFiles/gtsam.dir/navigation/ImuBias.cpp.o In file included from /usr/include/eigen3/Eigen/Core:365, from /usr/include/eigen3/Eigen/Dense:1, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/OptionalJacobian.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:27, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Manifold.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/geometry/BearingRange.h:21, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/geometry/Pose3.h:22, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/NavState.h:21, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/ManifoldPreintegration.h:24, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.h:26, from /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.cpp:23: /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h: In instantiation of ‘struct Eigen::internal::accessors_level’: /usr/include/boost/serialization/split_free.hpp:58:13: required from ‘static void boost::serialization::free_loader::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /usr/include/boost/serialization/split_free.hpp:74:18: required from ‘void boost::serialization::split_free(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:594:17: required from ‘void boost::serialization::serialize(Archive&, Eigen::Matrix&, unsigned int) [with Archive = boost::archive::xml_iarchive; Scalar_ = double; int Rows_ = 3; int Cols_ = 3; int Ops_ = 0; int MaxRows_ = 3; int MaxCols_ = 3]’ /usr/include/boost/serialization/serialization.hpp:126:14: required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix]’ /usr/include/boost/archive/detail/iserializer.hpp:187:40: [ skipping 21 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] /usr/include/boost/serialization/export.hpp:103:51: required from ‘static void boost::archive::detail::ptr_serialization_support::instantiate() [with Archive = boost::archive::xml_iarchive; Serializable = gtsam::PreintegrationCombinedParams]’ /usr/include/boost/serialization/export.hpp:84:1: required from ‘struct boost::archive::detail::ptr_serialization_support’ /usr/include/boost/archive/detail/register_archive.hpp:25:8: required from ‘struct boost::archive::detail::_ptr_serialization_support’ /usr/include/boost/archive/xml_iarchive.hpp:136:1: required by substitution of ‘template typename boost::archive::detail::_ptr_serialization_support::type boost::archive::detail::instantiate_ptr_serialization(Serializable*, boost::archive::xml_iarchive*, boost::archive::detail::adl_tag) [with Serializable = gtsam::PreintegrationCombinedParams]’ /usr/include/boost/serialization/export.hpp:121:38: required from ‘void boost::archive::detail::extra_detail::guid_initializer::export_guid(mpl_::false_) const [with T = gtsam::PreintegrationCombinedParams; mpl_::false_ = mpl_::bool_]’ /usr/include/boost/serialization/export.hpp:131:9: required from ‘const boost::archive::detail::extra_detail::guid_initializer& boost::archive::detail::extra_detail::guid_initializer::export_guid() const [with T = gtsam::PreintegrationCombinedParams]’ /home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/navigation/CombinedImuFactor.cpp:260:1: required from here /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:32:54: error: incomplete type ‘Eigen::internal::traits’ used in nested name specifier 32 | enum { has_direct_access = (traits::Flags & DirectAccessBit) ? 1 : 0, | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ /usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:33:53: error: incomplete type ‘Eigen::internal::traits’ used in nested name specifier 33 | has_write_access = (traits::Flags & LvalueBit) ? 1 : 0, | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:1688: gtsam/CMakeFiles/gtsam.dir/navigation/CombinedImuFactor.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [CMakeFiles/Makefile2:3210: gtsam/CMakeFiles/gtsam.dir/all] Error 2 make: *** [Makefile:163: all] Error 2 ```

So the additional Linux dependencies added in CI with lines https://github.com/dic-iit/kindyn-vio/blob/b27b9730b0595afd0a917744b5091dbb6c92a96f/.github/workflows/conda-ci.yml#L51-L53 are required exclusive for conda environments right? or should I try running a sudo apt install on these packages to see if my system is missing out on something?

traversaro commented 2 years ago

The problem occured in https://github.com/dic-iit/kindyn-vio/runs/3161345063 , and was fixed by https://github.com/dic-iit/kindyn-vio/pull/22/commits/e9bb7b36440f66e3344533bd8d4efe4aa73058e5 . My guess is that this is a bug fixed in Eigen 3.3.9 (contaned in conda-forge) while that is still present in Eigen 3.3.7 (that is the version present with apt in Ubuntu 20.04, see https://repology.org/project/eigen/versions). I guess that for the time being a possible workaround is to install manually Eigen 3.3.9 and use that one for compiling boht gtsam and blf.

prashanthr05 commented 2 years ago

In this CI here, I tried to compile GTSAM with C++17 which is reflected at the configuration step. The compilation of GTSAM is also successful, thanks to Eigen version 3.3.9 used due to the flag USE_SYSTEM_EIGEN added in https://github.com/dic-iit/kindyn-vio/commit/e9bb7b36440f66e3344533bd8d4efe4aa73058e5 by @traversaro.

However, the tests still fail due to segmentation fault on uncommenting the getOutput() method.

traversaro commented 2 years ago

In this CI here, I tried to compile GTSAM with C++17 which is reflected at the configuration step. The compilation of GTSAM is also successful, thanks to Eigen version 3.3.9 used due to the flag USE_SYSTEM_EIGEN added in e9bb7b3 by @traversaro.

However, the tests still fail due to segmentation fault on uncommenting the getOutput() method.

Did you tried to disable march=native (that probably changes Eigen ABI) as suggested in https://github.com/dic-iit/kindyn-vio/issues/25#issuecomment-891028155 ?

prashanthr05 commented 2 years ago

In this CI here, I tried to compile GTSAM with C++17 which is reflected at the configuration step. The compilation of GTSAM is also successful, thanks to Eigen version 3.3.9 used due to the flag USE_SYSTEM_EIGEN added in e9bb7b3 by @traversaro. However, the tests still fail due to segmentation fault on uncommenting the getOutput() method.

Did you tried to disable march=native (that probably changes Eigen ABI) as suggested in #25 (comment) ?

Waiting for that workflow to finish. Added in https://github.com/dic-iit/kindyn-vio/actions/runs/1090785589/workflow.

GiulioRomualdi commented 2 years ago

Related issue: https://bitbucket.org/gtborg/gtsam/issues/414/compiling-with-march-native-results-in

prashanthr05 commented 2 years ago

In this CI here, I tried to compile GTSAM with C++17 which is reflected at the configuration step. The compilation of GTSAM is also successful, thanks to Eigen version 3.3.9 used due to the flag USE_SYSTEM_EIGEN added in e9bb7b3 by @traversaro. However, the tests still fail due to segmentation fault on uncommenting the getOutput() method.

Did you tried to disable march=native (that probably changes Eigen ABI) as suggested in #25 (comment) ?

Waiting for that workflow to finish. Added in https://github.com/dic-iit/kindyn-vio/actions/runs/1090785589/workflow.

@traversaro @GiulioRomualdi CI passed without tests failing on segfaults. https://github.com/dic-iit/kindyn-vio/actions/runs/1090785589

traversaro commented 2 years ago

-march=native is great, but you need to pass it to all dependencies to avoid ABI problems, especially with Eigen.

prashanthr05 commented 2 years ago

For the sake of completeness,