Skip to content

Conversation

@mattking-smith
Copy link
Collaborator

Purpose

This PR fixes compilation issues with the current development build of GTSAM (I believe 4.3a0 correct me if I am wrong @dellaert) and attempts to close issue #28.

Steps To Verify

  • build GTSAM develop
  • build GPMP2
  • build all C++ unit tests
  • pass all C++ unit tests
  • pass Python unit tests
  • pass Matlab unit tests (I don't own Matlab @dellaert can you have someone verify?)

Build Configuration

  • GTSAM Debug with memory leak / GDB memory sanitizer
  • GPMP2 Debug

Current Problem

The build instructions now result in the following:

make -j4 check
.
.
.
76% tests passed, 9 tests failed out of 37

Total Test time (real) =   3.38 sec

The following tests FAILED:
          4 - testGaussianProcessInterpolatorLinear (Failed)
          5 - testGaussianProcessInterpolatorPose2 (Failed)
          6 - testGaussianProcessInterpolatorPose2Vector (Failed)
          7 - testGaussianProcessInterpolatorPose3 (Failed)
         11 - testGaussianProcessPriorPose3 (Subprocess aborted)
         20 - testMobileBaseUtils (Subprocess aborted)
         22 - testPose2Mobile2Arms (Subprocess aborted)
         25 - testPose2MobileVetLin2Arms (Subprocess aborted)
         26 - testPose2MobileVetLinArm (Subprocess aborted)

Specifically, most test fail due to segfaults like testGaussianProcessInterpolatorLinear:

4/37 Test  #4: testGaussianProcessInterpolatorLinear ........***Failed    0.29 sec
AddressSanitizer:DEADLYSIGNAL
=================================================================
==140968==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x55fd43da375f bp 0x7fff997a26b0 sp 0x7fff997a2698 T0)
==140968==The signal is caused by a READ memory access.
==140968==Hint: address points to the zero page.
    #0 0x55fd43da375e in _mm256_load_pd /usr/lib/gcc/x86_64-linux-gnu/9/include/avxintrin.h:862
    #1 0x55fd43da375e in double __vector(4) Eigen::internal::pload<double __vector(4)>(Eigen::internal::unpacket_traits<double __vector(4)>::type const*) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AVX/PacketMath.h:578
    #2 0x55fd43db7509 in double __vector(4) Eigen::internal::ploadt<double __vector(4), 32>(Eigen::internal::unpacket_traits<double __vector(4)>::type const*) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/GenericPacketMath.h:967
    #3 0x55fd43db7509 in double __vector(4) Eigen::internal::evaluator<Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > >::packet<32, double __vector(4)>(long) const /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/CoreEvaluators.h:245
    #4 0x55fd43db75e7 in void Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>::assignPacket<32, 32, double __vector(4)>(long) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:681
    #5 0x55fd43dbdfea in Eigen::internal::dense_assignment_loop<Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>, 3, 0>::run(Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:437
    #6 0x55fd43dbe109 in void Eigen::internal::call_dense_assignment_loop<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:785
    #7 0x55fd43dbe1b8 in Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:954
    #8 0x55fd43dbe1c7 in void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:890
    #9 0x55fd43dd062e in void Eigen::internal::call_assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::evaluator_traits<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::Shape>::value, void*>::type) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:858
    #10 0x55fd43dd06c1 in void Eigen::internal::call_assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:836
    #11 0x55fd43dd0759 in Eigen::Matrix<double, -1, -1, 0, -1, -1>& Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::DenseBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:779
    #12 0x55fd43dd0774 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::operator=(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h:208
    #13 0x55fd43e23982 in Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >& Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::compute<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::EigenBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:132
    #14 0x55fd43e23b73 in Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::EigenBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:315
    #15 0x7fdd0a743736 in Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::partialPivLu() const /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:604
    #16 0x7fdd0a743736 in Eigen::internal::compute_inverse<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1>&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/InverseImpl.h:28
    #17 0x7fdd0a743736 in Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 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::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/InverseImpl.h:322
    #18 0x7fdd0a743736 in void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> >, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:890
    #19 0x7fdd0a743736 in Eigen::Matrix<double, -1, -1, 0, -1, -1>& Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set_noalias<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::DenseBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:797
    #20 0x7fdd0a743736 in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::PlainObjectBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::DenseBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:594
    #21 0x7fdd0a743736 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::Matrix<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::EigenBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h:423
    #22 0x7fdd0a743736 in gpmp2::getQc(std::shared_ptr<gtsam::noiseModel::Base>) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/GPutils.cpp:18
    #23 0x55fd43e2823c in gpmp2::GaussianProcessInterpolatorLinear::GaussianProcessInterpolatorLinear(std::shared_ptr<gtsam::noiseModel::Base>, double, double) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/GaussianProcessInterpolatorLinear.h:52
    #24 0x55fd43d92ccb in GaussianProcessInterpolatorLinearequalsTest::run(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/tests/testGaussianProcessInterpolatorLinear.cpp:28
    #25 0x55fd43e2a9e9 in TestRegistry::run(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gtsam/CppUnitLite/TestRegistry.cpp:62
    #26 0x55fd43e2a63c in TestRegistry::runAllTests(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gtsam/CppUnitLite/TestRegistry.cpp:29
    #27 0x55fd43d91d3e in main /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/tests/testGaussianProcessInterpolatorLinear.cpp:197
    #28 0x7fdd046cc082 in __libc_start_main ../csu/libc-start.c:308
    #29 0x55fd43d91bed in _start (/home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/build/gpmp2/gp/testGaussianProcessInterpolatorLinear+0xf1bed)

Any help from current gtsam contributors (@dellaert) would be appreciated, thank you.

…CEPT_ASSERTs to static_asserts and 2) Adding AdjointMap to `DynmicLieGroupTraits`
…quals between different `Eigen` dimensions cannot happen.
@mattking-smith mattking-smith self-assigned this Oct 1, 2025
@mattking-smith mattking-smith added the bug Something isn't working label Oct 1, 2025
@mattking-smith mattking-smith linked an issue Oct 1, 2025 that may be closed by this pull request
@mattking-smith mattking-smith marked this pull request as draft October 1, 2025 03:39
@varunagrawal
Copy link
Collaborator

Yeah lots of things are going to break here because GTSAM has changed massively with breaking updates made over the last few years and no one has really looked at gpmp2 and kept up with it.

The changes are not bad but they're a bit of a bandaid fix without adopting the new paradigms and patterns in GTSAM. We went through this exercise in AstroSLAM and GTDynamics so probably need to do the same here.

@mattking-smith
Copy link
Collaborator Author

mattking-smith commented Oct 1, 2025

Yeah lots of things are going to break here because GTSAM has changed massively with breaking updates made over the last few years and no one has really looked at gpmp2 and kept up with it.

The changes are not bad but they're a bit of a bandaid fix without adopting the new paradigms and patterns in GTSAM. We went through this exercise in AstroSLAM and GTDynamics so probably need to do the same here.

I suspected there might be deeper issues at play when I saw memory allocation issues with Eigen. And this was my first stab at fixing the issue, not having touched GTSAM in a while. Is AstroSlam with @DCSLgatech?

Also I can try and implement the steps you recommend if you point me in the right direction.

@varunagrawal
Copy link
Collaborator

It's more likely the boost compatibility which is causing the segfaults and not something in core Eigen. Eigen has been incredibly robust and unless you're compiling against a different version compared to the GTSAM one, I think we can eliminate that in the RCA.

@varunagrawal
Copy link
Collaborator

I spent time last night trying to compile gpmp2. It's breaking all on Boost stuff, so I'll keep fixing stuff.

@mattking-smith
Copy link
Collaborator Author

mattking-smith commented Oct 1, 2025

This branch is able to compile everything as long as you remember to add the -DGTSAM_ALLOW_DEPRECATED_SINCE_V42:=OFF to the GTSAM cmake build... Or are you saying I am missing warnings or quite errors during gpmp2 build?

@varunagrawal
Copy link
Collaborator

This branch is able to compile everything as long as you remember to add the -DGTSAM_ALLOW_DEPRECATED_SINCE_V42:=OFF to the GTSAM cmake build... Or are you saying I am missing warnings or quite errors during gpmp2 build?

Wait so gpmp2 compiles as long we turn off deprecated features? And do the tests also run/pass? I only use the new GTSAM features, so a CI step that enables deprecated features could be good to have.

@varunagrawal
Copy link
Collaborator

I am able to build GPMP2 but no tests are failing for me. Can you please provide details on the error messages for the tests?

@mattking-smith
Copy link
Collaborator Author

I am able to build GPMP2 but no tests are failing for me. Can you please provide details on the error messages for the tests?

I will get these error messages when I get a chance this weekend.... But you're saying on your build that all tests C++, Python, and Matlab are passing for you with GPMP2? Are you using this branch then?

@mattking-smith
Copy link
Collaborator Author

Purpose

This PR fixes compilation issues with the current development build of GTSAM (I believe 4.3a0 correct me if I am wrong @dellaert) and attempts to close issue #28.

Steps To Verify

* [x]  build `GTSAM` `develop`

* [x]  build `GPMP2`

* [x]  build all C++ unit tests

* [ ]  pass all C++ unit tests

* [ ]  pass `Python` unit tests

* [ ]   pass `Matlab` unit tests (I don't own `Matlab` @dellaert can you have someone verify?)

Build Configuration

* `GTSAM` `Debug` with memory leak / `GDB` memory sanitizer

* `GPMP2` `Debug`

Current Problem

The build instructions now result in the following:

make -j4 check
.
.
.
76% tests passed, 9 tests failed out of 37

Total Test time (real) =   3.38 sec

The following tests FAILED:
          4 - testGaussianProcessInterpolatorLinear (Failed)
          5 - testGaussianProcessInterpolatorPose2 (Failed)
          6 - testGaussianProcessInterpolatorPose2Vector (Failed)
          7 - testGaussianProcessInterpolatorPose3 (Failed)
         11 - testGaussianProcessPriorPose3 (Subprocess aborted)
         20 - testMobileBaseUtils (Subprocess aborted)
         22 - testPose2Mobile2Arms (Subprocess aborted)
         25 - testPose2MobileVetLin2Arms (Subprocess aborted)
         26 - testPose2MobileVetLinArm (Subprocess aborted)

Specifically, most test fail due to segfaults like testGaussianProcessInterpolatorLinear:

4/37 Test  #4: testGaussianProcessInterpolatorLinear ........***Failed    0.29 sec
AddressSanitizer:DEADLYSIGNAL
=================================================================
==140968==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x55fd43da375f bp 0x7fff997a26b0 sp 0x7fff997a2698 T0)
==140968==The signal is caused by a READ memory access.
==140968==Hint: address points to the zero page.
    #0 0x55fd43da375e in _mm256_load_pd /usr/lib/gcc/x86_64-linux-gnu/9/include/avxintrin.h:862
    #1 0x55fd43da375e in double __vector(4) Eigen::internal::pload<double __vector(4)>(Eigen::internal::unpacket_traits<double __vector(4)>::type const*) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AVX/PacketMath.h:578
    #2 0x55fd43db7509 in double __vector(4) Eigen::internal::ploadt<double __vector(4), 32>(Eigen::internal::unpacket_traits<double __vector(4)>::type const*) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/GenericPacketMath.h:967
    #3 0x55fd43db7509 in double __vector(4) Eigen::internal::evaluator<Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > >::packet<32, double __vector(4)>(long) const /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/CoreEvaluators.h:245
    #4 0x55fd43db75e7 in void Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>::assignPacket<32, 32, double __vector(4)>(long) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:681
    #5 0x55fd43dbdfea in Eigen::internal::dense_assignment_loop<Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>, 3, 0>::run(Eigen::internal::generic_dense_assignment_kernel<Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::evaluator<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::internal::assign_op<double, double>, 0>&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:437
    #6 0x55fd43dbe109 in void Eigen::internal::call_dense_assignment_loop<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:785
    #7 0x55fd43dbe1b8 in Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double>, Eigen::internal::Dense2Dense, void>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:954
    #8 0x55fd43dbe1c7 in void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:890
    #9 0x55fd43dd062e in void Eigen::internal::call_assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::internal::assign_op<double, double> const&, Eigen::internal::enable_if<!Eigen::internal::evaluator_assume_aliasing<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::internal::evaluator_traits<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::Shape>::value, void*>::type) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:858
    #10 0x55fd43dd06c1 in void Eigen::internal::call_assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:836
    #11 0x55fd43dd0759 in Eigen::Matrix<double, -1, -1, 0, -1, -1>& Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::DenseBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:779
    #12 0x55fd43dd0774 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::operator=(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h:208
    #13 0x55fd43e23982 in Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >& Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::compute<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::EigenBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:132
    #14 0x55fd43e23b73 in Eigen::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::PartialPivLU<Eigen::Matrix<double, -1, -1, 0, -1, -1> >(Eigen::EigenBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:315
    #15 0x7fdd0a743736 in Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::partialPivLu() const /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h:604
    #16 0x7fdd0a743736 in Eigen::internal::compute_inverse<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1>::run(Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1>&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/InverseImpl.h:28
    #17 0x7fdd0a743736 in Eigen::internal::Assignment<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 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::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/LU/InverseImpl.h:322
    #18 0x7fdd0a743736 in void Eigen::internal::call_assignment_no_alias<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> >, Eigen::internal::assign_op<double, double> >(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > const&, Eigen::internal::assign_op<double, double> const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/AssignEvaluator.h:890
    #19 0x7fdd0a743736 in Eigen::Matrix<double, -1, -1, 0, -1, -1>& Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set_noalias<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::DenseBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:797
    #20 0x7fdd0a743736 in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::PlainObjectBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::DenseBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h:594
    #21 0x7fdd0a743736 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::Matrix<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > >(Eigen::EigenBase<Eigen::Inverse<Eigen::Product<Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >, Eigen::Matrix<double, -1, -1, 0, -1, -1>, 0> > > const&) /usr/local/include/gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h:423
    #22 0x7fdd0a743736 in gpmp2::getQc(std::shared_ptr<gtsam::noiseModel::Base>) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/GPutils.cpp:18
    #23 0x55fd43e2823c in gpmp2::GaussianProcessInterpolatorLinear::GaussianProcessInterpolatorLinear(std::shared_ptr<gtsam::noiseModel::Base>, double, double) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/GaussianProcessInterpolatorLinear.h:52
    #24 0x55fd43d92ccb in GaussianProcessInterpolatorLinearequalsTest::run(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/tests/testGaussianProcessInterpolatorLinear.cpp:28
    #25 0x55fd43e2a9e9 in TestRegistry::run(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gtsam/CppUnitLite/TestRegistry.cpp:62
    #26 0x55fd43e2a63c in TestRegistry::runAllTests(TestResult&) /home/matt/Repos/SCATE_Satellite_Inspection/external/gtsam/CppUnitLite/TestRegistry.cpp:29
    #27 0x55fd43d91d3e in main /home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/gpmp2/gp/tests/testGaussianProcessInterpolatorLinear.cpp:197
    #28 0x7fdd046cc082 in __libc_start_main ../csu/libc-start.c:308
    #29 0x55fd43d91bed in _start (/home/matt/Repos/SCATE_Satellite_Inspection/external/gpmp2/build/gpmp2/gp/testGaussianProcessInterpolatorLinear+0xf1bed)

Any help from current gtsam contributors (@dellaert) would be appreciated, thank you.

Also testGaussianProcessInterpolatorLinear is one of the test failing for me with the failure message given in the above quote

@varunagrawal
Copy link
Collaborator

I am able to build GPMP2 but no tests are failing for me. Can you please provide details on the error messages for the tests?

I will get these error messages when I get a chance this weekend.... But you're saying on your build that all tests C++, Python, and Matlab are passing for you with GPMP2? Are you using this branch then?

Yes. I am using the main branch with some small fixes around Boost compatibility.

@mattking-smith
Copy link
Collaborator Author

I am able to build GPMP2 but no tests are failing for me. Can you please provide details on the error messages for the tests?

I will get these error messages when I get a chance this weekend.... But you're saying on your build that all tests C++, Python, and Matlab are passing for you with GPMP2? Are you using this branch then?

Yes. I am using the main branch with some small fixes around Boost compatibility.

Are those Boost fixes on another branch? I guess I don't see them reflected here.

@mattking-smith
Copy link
Collaborator Author

mattking-smith commented Oct 5, 2025

I am able to build GPMP2 but no tests are failing for me. Can you please provide details on the error messages for the tests?

Running the following command:

make clean && make -j10 check > check.log 2>&1

I generate this check.log.

In the check.log the following C++ test failures are reported:

76% tests passed, 9 tests failed out of 37

Total Test time (real) =   3.20 sec

The following tests FAILED:
	  4 - testGaussianProcessInterpolatorLinear (Failed)
	  5 - testGaussianProcessInterpolatorPose2 (Failed)
	  6 - testGaussianProcessInterpolatorPose2Vector (Failed)
	  7 - testGaussianProcessInterpolatorPose3 (Failed)
	 11 - testGaussianProcessPriorPose3 (Subprocess aborted)
	 20 - testMobileBaseUtils (Subprocess aborted)
	 22 - testPose2Mobile2Arms (Subprocess aborted)
	 25 - testPose2MobileVetLin2Arms (Subprocess aborted)
	 26 - testPose2MobileVetLinArm (Subprocess aborted)

@varunagrawal
Copy link
Collaborator

Yes. I am using the main branch with some small fixes around Boost compatibility.

Are those Boost fixes on another branch? I guess I don't see them reflected here.

Yes, because I haven't pushed anything here.

@mattking-smith
Copy link
Collaborator Author

Yes. I am using the main branch with some small fixes around Boost compatibility.

Are those Boost fixes on another branch? I guess I don't see them reflected here.

Yes, because I haven't pushed anything here.

Do you plan to merge onto this branch? Or will you have me review the other branch to close #28 and then kill this branch?

@varunagrawal
Copy link
Collaborator

Some of the fixes here are not the right thing. You shouldn't be needing to replace the static asserts for example.

@mattking-smith
Copy link
Collaborator Author

Some of the fixes here are not the right thing. You shouldn't be needing to replace the static asserts for example.

You're right. So I've switched to your 'build-fix' branch

@dellaert
Copy link
Member

I just merged #31 - does that affect what happens here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants