Eigen segfaults on huge matrices
Submitted by Etienne Vouga
Assigned to Nobody
Link to original bugzilla bug (#363)
Version: 3.0
Operating system: Linux
Description
This simple program segfaults inside setZero():
#include <Eigen/Core>
int main()
{
Eigen::MatrixXd M(19604, 29601);
M.setZero();
}
Here's the backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x080491fb in Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1>::copyCoeff<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, index=43428860, other=...) at eigen/Eigen/src/Core/DenseCoeffsBase.h:508
508 derived().coeffRef(index) = other.derived().coeff(index);
(gdb) bt
#0 0x080491fb in Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1>::copyCoeff<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, index=43428860, other=...) at eigen/Eigen/src/Core/DenseCoeffsBase.h:508
#1 0x08049109 in Eigen::internal::assign_impl<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> >, 1, 0>::run (dst=..., src=...) at eigen/Eigen/src/Core/Assign.h:316
#2 0x0804900d in Eigen::DenseBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::lazyAssign<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/Assign.h:511
#3 0x08048f6a in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::lazyAssign<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/PlainObjectBase.h:371
#4 0x08048f35 in Eigen::internal::assign_selector<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> >, false, false>::run (dst=..., other=...) at eigen/Eigen/src/Core/Assign.h:534
#5 0x08048ecd in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set_noalias<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/PlainObjectBase.h:576
#6 0x08048e7e in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set_selector<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/PlainObjectBase.h:561
#7 0x08048d95 in Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::_set<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/PlainObjectBase.h:553
#8 0x08048c68 in Eigen::Matrix<double, -1, -1, 0, -1, -1>::operator=<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> > > (this=0xbffff1ec, other=...) at eigen/Eigen/src/Core/Matrix.h:189
#9 0x08048b0c in Eigen::DenseBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::setConstant (this=0xbffff1ec, value=@0xbffff1b8) at eigen/Eigen/src/Core/CwiseNullaryOp.h:341
#10 0x08048a1b in Eigen::DenseBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >::setZero (this=0xbffff1ec) at eigen/Eigen/src/Core/CwiseNullaryOp.h:490
#11 0x08048806 in main () at test.cpp:7
Edited by Eigen Bugzilla