| Re: [eigen] segfault in unit-tests with g++-4.2 |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
On Sunday 30 September 2007 16:37:45 Michael Olbrich wrote:
> On Sun, Sep 30, 2007 at 04:01:07PM +0200, Benoît Jacob wrote:
> > OK, answer by Richard Guenther, this is not a regression in gcc, this is
> > a bug in eigen :) the reason why it was hard to track down is that it
> > disappears when the relevant functions are inlined.
> >
> > We have yet to fix this bug but at least we now know that it's our bug.
>
> Hmmm, I only get segfaults for cols() != rows()
>
> michael
Found it! Indeed it had much to do with cols != rows.
The error was in this line, where we define the array for fixed-size matrix
storage (in MatrixStorage.h) :
Scalar m_array[RowsAtCompileTime * ColsAtCompileTime];
Of course this should be:
Scalar m_array[RowsAtCompileTime * ColsAtCompileTime];
Because of that error, the operator= eventually wrote outside of the matrix's
storage array, and overwrote a MatrixConstRef's reference, causing the
reported reference corruption.
Cheers,
Benoit
Attachment:
signature.asc
Description: This is a digitally signed message part.
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |