Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BLF filters segmentation fault at getOutput call #25

Closed
prashanthr05 opened this issue Jul 29, 2021 · 28 comments · Fixed by #26
Closed

BLF filters segmentation fault at getOutput call #25

prashanthr05 opened this issue Jul 29, 2021 · 28 comments · Fixed by #26
Assignees
Labels
help wanted Extra attention is needed

Comments

@prashanthr05
Copy link
Collaborator

prashanthr05 commented Jul 29, 2021

Trying to run the EKFOdometryiSAM2 example code added in e03a5be 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
==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<double, -1, -1, 0, -1, -1>&) (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<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (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<true>(unsigned long) (Memory.h:214)
==45456==    by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto<double, true>(unsigned long) (Memory.h:374)
==45456==    by 0x11EC0F: Eigen::DenseStorage<double, -1, -1, -1, 0>::resize(long, long, long) (DenseStorage.h:408)
==45456==    by 0x11C4CB: Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::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<double, -1, -1, 0, -1, -1>&) (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<double, -1, -1, 0, -1, -1>&) (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::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const> const&, Eigen::internal::assign_op<double, double> 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<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (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<true>(unsigned long) (Memory.h:214)
==45456==    by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto<double, true>(unsigned long) (Memory.h:374)
==45456==    by 0x11EC0F: Eigen::DenseStorage<double, -1, -1, -1, 0>::resize(long, long, long) (DenseStorage.h:408)
==45456==    by 0x11C4CB: Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::resize(long, long) (PlainObjectBase.h:293)
==45456==    by 0x4BD85C9: Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const> const&, Eigen::internal::assign_op<double, double> 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<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (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<true>(unsigned long) (Memory.h:214)
==45456==    by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto<double, true>(unsigned long) (Memory.h:374)
==45456==    by 0x11EC0F: Eigen::DenseStorage<double, -1, -1, -1, 0>::resize(long, long, long) (DenseStorage.h:408)
==45456==    by 0x11C4CB: Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::resize(long, long) (PlainObjectBase.h:293)
==45456==    by 0x4BE1D69: Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 1, -1, -1>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const&, Eigen::internal::assign_op<double, double> 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::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const> const&, Eigen::internal::assign_op<double, double> 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::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::DenseShape, Eigen::DenseShape, 8>::evalTo<Eigen::Matrix<double, -1, -1, 1, -1, -1> >(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const&, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> > 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<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (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<true>(unsigned long) (Memory.h:214)
==45456==    by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto<double, true>(unsigned long) (Memory.h:374)
==45456==    by 0x11EC0F: Eigen::DenseStorage<double, -1, -1, -1, 0>::resize(long, long, long) (DenseStorage.h:408)
==45456==    by 0x11C4CB: Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::resize(long, long) (PlainObjectBase.h:293)
==45456==    by 0x4BE16B1: void Eigen::internal::generic_product_impl<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::DenseShape, Eigen::DenseShape, 8>::evalTo<Eigen::Matrix<double, -1, -1, 1, -1, -1> >(Eigen::Matrix<double, -1, -1, 1, -1, -1>&, Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const&, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> > 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<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (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<true>(unsigned long) (Memory.h:214)
==45456==    by 0x1216BE: double* Eigen::internal::conditional_aligned_new_auto<double, true>(unsigned long) (Memory.h:374)
==45456==    by 0x11EC0F: Eigen::DenseStorage<double, -1, -1, -1, 0>::resize(long, long, long) (DenseStorage.h:408)
==45456==    by 0x11C4CB: Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45456==    by 0x129A76: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45456==    by 0x129578: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45456==    by 0x128D6D: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45456==    by 0x127E5B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45456==    by 0x126EA4: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45456==    by 0x1258FD: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_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 prashanthr05 added the help wanted Extra attention is needed label Jul 29, 2021
@prashanthr05
Copy link
Collaborator Author

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
==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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:1875)
==45706==    by 0x1200B6: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > const&, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:1875)
==45706==    by 0x1200B6: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > const&, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:1875)
==45706==    by 0x1200B6: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > const&, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:901)
==45706== 
==45706== Conditional jump or move depends on uninitialised value(s)
==45706==    at 0x4F8816B: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:1875)
==45706== 
==45706== Conditional jump or move depends on uninitialised value(s)
==45706==    at 0x4F88170: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:1875)
==45706== 
==45706== Use of uninitialised value of size 8
==45706==    at 0x4F87E6B: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_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<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(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<int const, BipedalLocomotion::Contacts::EstimatedContact>::pair(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_pair.h:303)
==45706==    by 0x12795E: void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (new_allocator.h:147)
==45706==    by 0x127460: void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > > >::construct<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::allocator<std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >&, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (alloc_traits.h:484)
==45706==    by 0x126C55: void std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_construct_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >*, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:614)
==45706==    by 0x125D1B: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_create_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) (stl_tree.h:631)
==45706==    by 0x124DDA: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node::operator()<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&>(std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> const&) const (stl_tree.h:548)
==45706==    by 0x123869: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_clone_node<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node&) (stl_tree.h:658)
==45706==    by 0x122239: std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >* std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_M_copy<std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_Alloc_node>(std::_Rb_tree_node<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > const*, std::_Rb_tree_node_base*, std::_Rb_tree<int, std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact>, std::_Select1st<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> >, std::less<int>, std::allocator<std::pair<int const, BipedalLocomotion::Contacts::EstimatedContact> > >::_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<Eigen::Matrix<double, 7, 1, 0, 7, 1> >::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)

@prashanthr05 prashanthr05 self-assigned this Jul 29, 2021
@GiulioRomualdi
Copy link
Member

I would suggest you to run the test with gdb

@prashanthr05
Copy link
Collaborator Author

GDB output for InvariantEKFBaseEstimator
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

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 <main_arena>, p=0x5555556a61d0, have_lock=<optimized out>) 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<double, -1, -1, 0, -1, -1>&) ()
   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<char> (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 <main(int, char**)>, argc=1, argv=0x7fffffffc908, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    stack_end=0x7fffffffc8f8) at ../csu/libc-start.c:308
#20 0x000055555555cdce in _start ()
GDB output for LeggedOdometry
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

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 <main_arena>, p=0x5555556b90d0, have_lock=<optimized out>) at malloc.c:4314
#5  0x00007ffff7c6e360 in void Eigen::internal::call_dense_assignment_loop<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const, Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, Eigen::Product<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> const, Eigen::Matrix<double, -1, -1, 0, -1, -1> const> const&, Eigen::internal::assign_op<double, double> 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<char> (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 <main(int, char**)>, argc=1, argv=0x7fffffffc908, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    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
Copy link
Member

Is blf compiled in debug?

@prashanthr05
Copy link
Collaborator Author

Is blf compiled in debug?

Ah, I had missed that!

GDB output for InvariantEKFBaseEstimator with BLF compiled in debug
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

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 <main_arena>, p=0x5555556a61d0, 
    have_lock=<optimized out>) 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<true> (ptr=0x5555556a61e0)
    at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:230
#7  0x00007ffff7a7a725 in Eigen::internal::conditional_aligned_delete_auto<double, true> (
    ptr=0x5555556a61e0, size=225) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:416
#8  0x00007ffff7aec14f in Eigen::DenseStorage<double, -1, -1, -1, 0>::~DenseStorage (
    this=0x7fffffffab20, __in_chrg=<optimized out>)
    at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:391
#9  0x00007ffff7aeae60 in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::~PlainObjectBase (this=0x7fffffffab20, __in_chrg=<optimized out>)
    at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:98
#10 0x00007ffff7aeae80 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::~Matrix (this=0x7fffffffab20, 
    __in_chrg=<optimized out>) 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<char> (this=0x7fffffffc670, argc=1, 
    argv=0x7fffffffc908) at /usr/local/include/catch2/catch.hpp:13031
--Type <RET> 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 <main(int, char**)>, argc=1, 
    argv=0x7fffffffc908, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    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
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

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 <main_arena>, p=0x5555556d9070, 
    have_lock=<optimized out>) 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<true> (ptr=0x5555556d9080)
    at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:230
#7  0x00007ffff7a7a725 in Eigen::internal::conditional_aligned_delete_auto<double, true> (
    ptr=0x5555556d9080, size=6) at /usr/include/eigen3/Eigen/src/Core/util/Memory.h:416
#8  0x00007ffff7a7719f in Eigen::DenseStorage<double, -1, -1, 1, 0>::~DenseStorage (
    this=0x7fffffff99b0, __in_chrg=<optimized out>)
    at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:542
#9  0x00007ffff7a754a2 in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >::~PlainObjectBase (this=0x7fffffff99b0, __in_chrg=<optimized out>)
    at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:98
#10 0x00007ffff7a754c2 in Eigen::Matrix<double, -1, 1, 0, -1, 1>::~Matrix (this=0x7fffffff99b0, 
    __in_chrg=<optimized out>) at /usr/include/eigen3/Eigen/src/Core/Matrix.h:178
#11 0x00007ffff7b66993 in Eigen::internal::call_assignment<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>, Eigen::Product<Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 0>, Eigen::internal::assign_op<double, double> > (dst=..., src=..., func=...)
    at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:796
#12 0x00007ffff7b653b8 in Eigen::internal::call_assignment<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>, Eigen::Product<Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 0> > (dst=..., src=...) at /usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:782
#13 0x00007ffff7b6328f in Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false> >::operator=<Eigen::Product<Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 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 <RET> 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<char> (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 <main(int, char**)>, argc=1, 
    argv=0x7fffffffc908, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    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
Copy link
Collaborator Author

prashanthr05 commented Aug 2, 2021

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
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 <http://gnu.org/licenses/gpl.html>
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:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

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<T, Size, MatrixOrArrayOptions, 32>::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=<optimized out>) 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<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = double; int Size = 4; int MatrixOrArrayOptions = 0]") at assert.c:101
#4  0x0000555555592193 in Eigen::internal::plain_array<double, 4, 0, 32>::plain_array (
    this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128
#5  0x0000555555590588 in Eigen::DenseStorage<double, 4, 4, 1, 0>::DenseStorage (
    this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:187
#6  0x000055555558e4a2 in Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 1, 0, 4, 1> >::PlainObjectBase (this=0x7fffffffb250) at /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:484
#7  0x000055555558bace in Eigen::Matrix<double, 4, 1, 0, 4, 1>::Matrix (this=0x7fffffffb250)
    at /usr/include/eigen3/Eigen/src/Core/Matrix.h:259
#8  0x00005555555893fe in Eigen::Quaternion<double, 0>::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 <RET> 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<char> (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 <main(int, char**)>, argc=1, 
    argv=0x7fffffffc8e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    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
Copy link
Collaborator

traversaro commented Aug 2, 2021

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

@prashanthr05
Copy link
Collaborator Author

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
Copy link
Collaborator

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
Copy link
Collaborator

(is the same thing happening on GitHub Actions?)

@prashanthr05
Copy link
Collaborator Author

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
Copy link
Collaborator Author

prashanthr05 commented Aug 2, 2021

(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
Copy link
Collaborator Author

prashanthr05 commented Aug 2, 2021

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 #25 (comment))

+    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
Copy link
Collaborator Author

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
Copy link
Collaborator Author

prashanthr05 commented Aug 2, 2021

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 (borglab/gtsam#620) instead of using system eigen).

Here in this PR in GTSAM, borglab/gtsam#27, it says that cxx11 is propagated to all dependent projects.

Linking this issue since it contains some useful information: borglab/gtsam#21

@traversaro
Copy link
Collaborator

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

@traversaro
Copy link
Collaborator

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
Copy link
Collaborator Author

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`
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<boost::serialization::U>’:
/usr/include/boost/serialization/split_free.hpp:58:13:   required from ‘static void boost::serialization::free_loader<Archive, T>::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix<double, 3, 3>]’
/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<double, 3, 3>]’
/home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:594:17:   required from ‘void boost::serialization::serialize(Archive&, Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_>&, 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<double, 3, 3>]’
/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<Archive, Serializable>::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<boost::archive::xml_iarchive, gtsam::PreintegrationCombinedParams>’
/usr/include/boost/archive/detail/register_archive.hpp:25:8:   required from ‘struct boost::archive::detail::_ptr_serialization_support<boost::archive::xml_iarchive, gtsam::PreintegrationCombinedParams>’
/usr/include/boost/archive/xml_iarchive.hpp:136:1:   required by substitution of ‘template<class Serializable> typename boost::archive::detail::_ptr_serialization_support<boost::archive::xml_iarchive, Serializable>::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<T>::export_guid(mpl_::false_) const [with T = gtsam::PreintegrationCombinedParams; mpl_::false_ = mpl_::bool_<false>]’
/usr/include/boost/serialization/export.hpp:131:9:   required from ‘const boost::archive::detail::extra_detail::guid_initializer<T>& boost::archive::detail::extra_detail::guid_initializer<T>::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<boost::serialization::U>’ used in nested name specifier
   32 |   enum { has_direct_access = (traits<Derived>::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<boost::serialization::U>’ used in nested name specifier
   33 |          has_write_access = (traits<Derived>::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
Copy link
Collaborator

traversaro commented Aug 2, 2021

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

@prashanthr05
Copy link
Collaborator Author

Compiling with the flags,

  • GTSAM_COMPILE_FEATURES_PUBLIC set to cxx_std_17
  • GTSAM_USE_SYSTEM_EIGEN set to ON
  • GTSAM_WITH_TBB set to OFF
  • GTSAM_BUILD_WITH_MARCH_NATIVE set to OFF

results in the same error,

Compile log
 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<boost::serialization::U>’:
/usr/include/boost/serialization/split_free.hpp:58:13:   required from ‘static void boost::serialization::free_loader<Archive, T>::invoke(Archive&, T&, unsigned int) [with Archive = boost::archive::xml_iarchive; T = Eigen::Matrix<double, 3, 3>]’
/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<double, 3, 3>]’
/home/pramadoss/iit_ws/scrapyard/gtsam/gtsam/base/Matrix.h:594:17:   required from ‘void boost::serialization::serialize(Archive&, Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_>&, 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<double, 3, 3>]’
/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<Archive, Serializable>::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<boost::archive::xml_iarchive, gtsam::PreintegrationCombinedParams>’
/usr/include/boost/archive/detail/register_archive.hpp:25:8:   required from ‘struct boost::archive::detail::_ptr_serialization_support<boost::archive::xml_iarchive, gtsam::PreintegrationCombinedParams>’
/usr/include/boost/archive/xml_iarchive.hpp:136:1:   required by substitution of ‘template<class Serializable> typename boost::archive::detail::_ptr_serialization_support<boost::archive::xml_iarchive, Serializable>::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<T>::export_guid(mpl_::false_) const [with T = gtsam::PreintegrationCombinedParams; mpl_::false_ = mpl_::bool_<false>]’
/usr/include/boost/serialization/export.hpp:131:9:   required from ‘const boost::archive::detail::extra_detail::guid_initializer<T>& boost::archive::detail::extra_detail::guid_initializer<T>::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<boost::serialization::U>’ used in nested name specifier
   32 |   enum { has_direct_access = (traits<Derived>::Flags & DirectAccessBit) ? 1 : 0,
      |                              ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h:33:53: error: incomplete type ‘Eigen::internal::traits<boost::serialization::U>’ used in nested name specifier
   33 |          has_write_access = (traits<Derived>::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
Copy link
Collaborator

The problem occured in https://github.com/dic-iit/kindyn-vio/runs/3161345063 , and was fixed by e9bb7b3 . 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
Copy link
Collaborator Author

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.

@traversaro
Copy link
Collaborator

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) ?

@prashanthr05
Copy link
Collaborator Author

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
Copy link
Member

@prashanthr05
Copy link
Collaborator Author

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
Copy link
Collaborator

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

@prashanthr05
Copy link
Collaborator Author

For the sake of completeness,

  • Use Eigen 3.3.9
  • Compile GTSAM using USE_SYSTEM_EIGEN, GTSAM_BUILD_WITH_MARCH_NATIVE to off, GTSAM_COMPILE_FEATURES_PUBLIC set to cxx_std_17
  • Recompile BLF and manif 0.0.4
  • Add <GTSAM_INSTALL>/lib to LD_LIBRARY_PATH and run a sudo ldconfig
  • Add gtsam gtsam_unstable and metis-gtsam to target link libraries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants