Skip to content

Memory leak in Equilibrium #6

Open
@JasonChmn

Description

@JasonChmn

We instantiate a new Solver_LP_abstract and never delete it.

m_solver = Solver_LP_abstract::getNewSolver(solver_type);

Result on valgrind :

==21177== at 0x4C2E0EF: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==21177== by 0xD6EEC51: centroidal_dynamics::Solver_LP_abstract::getNewSolver(centroidal_dynamics::SolverLP) (in /opt/openrobots/lib/libhpp-centroidal-dynamics.so)
==21177== by 0xD6E030B: centroidal_dynamics::Equilibrium::Equilibrium(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double, unsigned int, centroidal_dynamics::SolverLP, bool, unsigned int, bool) (in /opt/openrobots/lib/libhpp-centroidal-dynamics.so)

Adding a destructor in Equilibrium class deleting the pointer m_solver to Solver_LP_abstract , create a new memory leak with qpOASES when calling function solve() of solver_LP :

LP_status Solver_LP_qpoases::solve(Cref_vectorX c, Cref_vectorX lb, Cref_vectorX ub, Cref_matrixXX A, Cref_vectorX Alb,

==18727==    at 0x4C2E80F: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==18727==    by 0x8B3AC70: qpOASES::QProblem::copy(qpOASES::QProblem const&) (in /opt/openrobots/lib/libqpOASES.so.3.2)
==18727==    by 0x8B3AF9B: qpOASES::QProblem::operator=(qpOASES::QProblem const&) (in /opt/openrobots/lib/libqpOASES.so.3.2)
==18727==    by 0x8B1404D: qpOASES::SQProblem::operator=(qpOASES::SQProblem const&) (in /opt/openrobots/lib/libqpOASES.so.3.2)
==18727==    by 0xD8F553D: centroidal_dynamics::Solver_LP_qpoases::solve(Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, -1, 1, -1, -1> const, 0, Eigen::OuterStride<-1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, -1, 1, 0, -1, 1>, 0, Eigen::InnerStride<1> >) (in /opt/openrobots/lib/libhpp-centroidal-dynamics.so)
==18727==    by 0xD8A4C28: centroidal_dynamics::Equilibrium::computeEquilibriumRobustness(Eigen::Ref<Eigen::Matrix<double, 3, 1, 0, 3, 1> const, 0, Eigen::InnerStride<1> > const&, Eigen::Ref<Eigen::Matrix<double, 3, 1, 0, 3, 1> const, 0, Eigen::InnerStride<1> > const&, double&) (in /opt/openrobots/lib/libhpp-centroidal-dynamics.so)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions