Program received signal SIGABRT, Aborted.
0x00007ffff2f48cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0 Â 0x00007ffff2f48cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 Â 0x00007ffff2f4c0d8 in __GI_abort () at abort.c:89
#2 Â 0x00007ffff2f85394 in __libc_message (do_abort=do_abort@entry=1,Â
  fmt=fmt@entry=0x7ffff3093b28 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
#3 Â 0x00007ffff2f9166e in malloc_printerr (ptr=<optimized out>, str=0x7ffff3093c58 "double free or corruption (out)",Â
  action=1) at malloc.c:4996
#4 Â _int_free (av=<optimized out>, p=<optimized out>, have_lock=0) at malloc.c:3840
#5 Â 0x00000000004632f3 in ceres::internal::AutoDiff<EAResidue, double, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0>::Differentiate(EAResidue const&, double const* const*, int, double*, double**) ()
#6 Â 0x000000000047a5e3 in ceres::internal::ResidualBlock::Evaluate(bool, double*, double*, double**, double*) const ()
#7 Â 0x00000000004952d0 in ceres::internal::ProgramEvaluator<ceres::internal::ScratchEvaluatePreparer, ceres::internal::DenseJacobianWriter, ceres::internal::NullJacobianFinalizer>::Evaluate(ceres::internal::Evaluator::EvaluateOptions const&, double const*, double*, double*, double*, ceres::internal::SparseMatrix*) [clone ._omp_fn.3] ()
#8 Â 0x000000000049b88e in ceres::internal::ProgramEvaluator<ceres::internal::ScratchEvaluatePreparer, ceres::internal::DenseJacobianWriter, ceres::internal::NullJacobianFinalizer>::Evaluate(ceres::internal::Evaluator::EvaluateOptions const&, double const*, double*, double*, double*, ceres::internal::SparseMatrix*) ()
#9 Â 0x00000000004abeac in ceres::internal::TrustRegionMinimizer::EvaluateGradientAndJacobian() ()
#10 0x00000000004ac643 in ceres::internal::TrustRegionMinimizer::IterationZero() ()
#11 0x00000000004b0796 in ceres::internal::TrustRegionMinimizer::Minimize(ceres::internal::Minimizer::Options const&, double*, ceres::Solver::Summary*) ()
#12 0x000000000048974f in ceres::Solver::Solve(ceres::Solver::Options const&, ceres::Problem*, ceres::Solver::Summary*)
#13 0x0000000000489de9 in ceres::Solve(ceres::Solver::Options const&, ceres::Problem*, ceres::Solver::Summary*) ()
#14 0x000000000045a953 in SolveEA::setAsCERESProblem() ()
#15 0x00000000004512bc in main ()
Number of residues is 8322. With 2 optimization variable a quaternion and another 3d translation.
double q_cap[4] = {1,0,0,0};
double t_cap[3] = {0,0,0};
Problem problem;
// make interpolator
ceres::Grid2D<double,2> grid( now_dist_transform_eig.data(), 0, now_dist_transform_eig.rows(), 0, now_dist_transform_eig.cols());
BiCubicInterpolator< Grid2D<double,2> > interpolated_cost_function(grid);
problem.AddResidualBlock( new AutoDiffCostFunction<EAResidue,8322,4,3>( new EAResidue(list_edge_ref, interpolated_cost_function, K) ),
NULL,
q_cap,
t_cap
);
// local parameterization
LocalParameterization* local_parameterization = new ceres::QuaternionParameterization;
problem.SetParameterization(q_cap, local_parameterization);
// setting the solver
Solver::Options options;
// options.max_num_iterations = 25;
options.max_solver_time_in_seconds = 5;
options.linear_solver_type = ceres::DENSE_QR;
options.minimizer_progress_to_stdout = true;
options.minimizer_type = ceres::TRUST_REGION;
options.trust_region_strategy_type = ceres::DOGLEG;
options.dogleg_type = ceres::SUBSPACE_DOGLEG;
Solver::Summary summary;
Solve(options, &problem, &summary);
// std::cout << summary.BriefReport() << "\n";
std::cout << summary.FullReport() << "\n";