Bug 784 - assigning products to traingularView does not warn for size mismatch
assigning products to traingularView does not warn for size mismatch
Status: CONFIRMED
Product: Eigen
Classification: Unclassified
Component: Core - matrix products
3.2
All All
: Low Unit Test Required
Assigned To: Nobody
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2014-04-04 17:34 UTC by Jitse Niesen
Modified: 2014-06-15 19:41 UTC (History)
1 user (show)



Attachments

Description Jitse Niesen 2014-04-04 17:34:52 UTC
Test code:
----
  MatrixXd m1, m2;
  m1.setRandom(5,5);
  m2.resize(6,6);
  m2.triangularView<Lower>() = m1*m1;
----

This should warn that the size of m2 is different from the size of m1*m1 (unless compiled with -DNDEBUG) but it does not. Instead it produces invalid reads when run under valgrind.

Note that the product is necessary, "m2.triangularView<Lower>() = m1" without the product does produce a warning.
Comment 1 Christoph Hertzberg 2014-04-04 17:51:11 UTC
I added an assertion
https://bitbucket.org/eigen/eigen/commits/4544bc9

That fixes the immediate problem, we should add a regression-test and transplant to 3.2 (therefore I leave this bug open for now)
Comment 2 Christoph Hertzberg 2014-06-15 19:41:46 UTC
I'm actually not sure anymore, whether my patch might be too strict. E.g., shall the following work?

  MatrixXd m1(4,3), m2(3,3);
  m1.triangularView<Upper>() = m2*m2;

There is always the workaround of inserting a .topRows(3) after m1.

Note You need to log in before you can comment on or make changes to this bug.