Skip to content

Instantly share code, notes, and snippets.

@julienr
Forked from anonymous/eigen_sparse_solver.cc
Created July 20, 2013 20:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save julienr/6046365 to your computer and use it in GitHub Desktop.
Save julienr/6046365 to your computer and use it in GitHub Desktop.
// g++ -o eigen_test eigen_sparse_solver.cc -I/home/julien/slash/include/eigen3 -I/usr/include/suitesparse -lumfpack -lamd -lblas
#include <cstdlib>
#include <cassert>
#include <Eigen/Eigen>
#include <Eigen/UmfPackSupport>
#include <vector>
#include <iostream>
using namespace Eigen;
using namespace std;
typedef SparseMatrix<double, ColMajor> Sparsed;
typedef Triplet<double> Tripletd;
int main(int argc, char** argv) {
Sparsed* A = new Sparsed(3, 3);
// Same example as Eigen basic linear solving
A->insert(0, 0) = 1;
A->insert(0, 1) = 2;
A->insert(0, 2) = 3;
A->insert(1, 0) = 4;
A->insert(1, 1) = 5;
A->insert(1, 2) = 6;
A->insert(2, 0) = 7;
A->insert(2, 1) = 8;
A->insert(2, 2) = 10;
A->makeCompressed();
UmfPackLU<Sparsed> solver;
solver.compute(*A);
assert(solver.info() == Success);
// Problematic deletion case
delete A;
Vector3d b;
b << 3, 3, 4;
VectorXd x = solver.solve(b);
cout << "x : " << x.transpose() << endl;
// Working deletion case
//delete A;
}
==15000== Memcheck, a memory error detector
==15000== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==15000== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==15000== Command: ./eigen_test
==15000==
==15000== Invalid read of size 4
==15000== at 0x4E520C6: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c4bc is 12 bytes inside a block of size 16 free'd
==15000== at 0x4C2BA6C: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x40272D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 8
==15000== at 0x4E521A3: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c610 is 0 bytes inside a block of size 72 free'd
==15000== at 0x4C2B01C: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x40301C: Eigen::internal::CompressedStorage<double, int>::~CompressedStorage() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40274D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 4
==15000== at 0x4E521A9: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c6a0 is 0 bytes inside a block of size 36 free'd
==15000== at 0x4C2B01C: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x403039: Eigen::internal::CompressedStorage<double, int>::~CompressedStorage() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40274D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 4
==15000== at 0x4E52608: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c4b4 is 4 bytes inside a block of size 16 free'd
==15000== at 0x4C2BA6C: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x40272D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 4
==15000== at 0x4E5260D: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c4b0 is 0 bytes inside a block of size 16 free'd
==15000== at 0x4C2BA6C: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x40272D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 4
==15000== at 0x4E52638: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c6a0 is 0 bytes inside a block of size 36 free'd
==15000== at 0x4C2B01C: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x403039: Eigen::internal::CompressedStorage<double, int>::~CompressedStorage() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40274D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
==15000== Invalid read of size 8
==15000== at 0x4E5263C: umfdi_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x4E673AD: umfpack_di_solve (in /usr/lib/libumfpack.so.3.1.0)
==15000== by 0x401FF9: Eigen::umfpack_solve(int, int const*, int const*, double const*, double*, double const*, void*, double const*, double*) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40686B: bool Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >::_solve<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::MatrixBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405FDA: void Eigen::internal::solve_retval<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x405006: void Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x403C32: void Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >::evalTo<Eigen::Matrix<double, -1, 1, 0, -1, 1> >(Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const (in /home/julien/tm/v2/eigen_test)
==15000== by 0x402A6C: Eigen::Matrix<double, -1, 1, 0, -1, 1>::Matrix<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > >(Eigen::ReturnByValue<Eigen::internal::solve_retval_base<Eigen::UmfPackLU<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, 3, 1, 0, 3, 1> > > const&) (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4019FA: main (in /home/julien/tm/v2/eigen_test)
==15000== Address 0x617c610 is 0 bytes inside a block of size 72 free'd
==15000== at 0x4C2B01C: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==15000== by 0x40301C: Eigen::internal::CompressedStorage<double, int>::~CompressedStorage() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x40274D: Eigen::SparseMatrix<double, 0, int>::~SparseMatrix() (in /home/julien/tm/v2/eigen_test)
==15000== by 0x4018F4: main (in /home/julien/tm/v2/eigen_test)
==15000==
x : -2 1 1
==15000==
==15000== HEAP SUMMARY:
==15000== in use at exit: 0 bytes in 0 blocks
==15000== total heap usage: 86 allocs, 86 frees, 16,302 bytes allocated
==15000==
==15000== All heap blocks were freed -- no leaks are possible
==15000==
==15000== For counts of detected and suppressed errors, rerun with: -v
==15000== ERROR SUMMARY: 43 errors from 7 contexts (suppressed: 2 from 2)
==15197== Memcheck, a memory error detector
==15197== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
==15197== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info
==15197== Command: ./eigen_test
==15197==
x : -2 1 1
==15197==
==15197== HEAP SUMMARY:
==15197== in use at exit: 0 bytes in 0 blocks
==15197== total heap usage: 86 allocs, 86 frees, 16,302 bytes allocated
==15197==
==15197== All heap blocks were freed -- no leaks are possible
==15197==
==15197== For counts of detected and suppressed errors, rerun with: -v
==15197== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment