There appears to be a problem with the alignment of the Eigen::Quaternion class. The problem is that the EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT assertion is raised if a Quaternion is allocated on the heap. Configuration: Microsoft Visual Studio 2010 Express, SSE2 architecture enabled, Eigen vectorization enabled, 32-bit build. The problem in is produced with the following code: return new Eigen::Quaternion< float >( a, b, c, d ); // where a,b,c,d are arbitrary values And is caused by the regular (unaligned) new allocator being called, instead of the aligned allocator (as overloaded by EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF), and the fact that the Quaterion class apparently requires an aligned member: Coefficients m_coeffs; Because the unaligned allocator is called, this requirement is not met and an assertion is thrown. The problem seens to be fixed by overloading the new operator in the Quaternion class (this may not be the best place, but it works) by adding the following to the Quaternion class (copied from Matrix): enum { NeedsToAlign = (!(_Options&DontAlign)) }; EIGEN_MAKE_ALIGNED_OPERATOR_NEW_IF(NeedsToAlign)
Fixed in fad437303568. The problem was actually a bit worse than that. Thanks for the report.
pushed to 3.0 branch: f78e89cc992e
*** Bug 378 has been marked as a duplicate of this bug. ***
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/369.