This bugzilla service is closed. All entries have been migrated to
Bug 1411 - Quaternion product crashes if EIGEN_DONT_ALIGN_STATICALLY is defined
Summary: Quaternion product crashes if EIGEN_DONT_ALIGN_STATICALLY is defined
Alias: None
Product: Eigen
Classification: Unclassified
Component: Geometry (show other bugs)
Version: 3.4 (development)
Hardware: x86 - SSE All
: High Crash
Assignee: Nobody
Depends on:
Reported: 2017-03-28 03:50 UTC by Shuntaro Yamazaki
Modified: 2019-12-04 16:55 UTC (History)
4 users (show)

Patch (1.62 KB, patch)
2017-03-28 03:50 UTC, Shuntaro Yamazaki
no flags Details | Diff

Description Shuntaro Yamazaki 2017-03-28 03:50:51 UTC
Created attachment 783 [details]

SSE intrinsics can be called with unaligned pointers in quat_product::run, causing SegFault. The same applies to quat_conj::run.

$ cat qprod.cpp
#include <Eigen/Geometry>
int main() {
    Eigen::Quaterniond q1 = Eigen::Quaterniond(1,0,0,0);
    Eigen::Quaterniond q2 = Eigen::Quaterniond(1,0,0,0);
    Eigen::Quaterniond q = q1 * q2;
    return q.norm();

$ clang++ --version
clang version 3.7.0 (trunk 239477)
Target: x86_64-unknown-linux-gnu

$ clang++ -I. -DEIGEN_DONT_ALIGN_STATICALLY qprod.cpp

$ ./a.out 
Segmentation fault

Note that the above code may not cause SegFault if on-stack Quaternion objects happen to be 16-byte aligned. 

The issue seems to exist in the latest stable and development branches, and is solved by an attached patch. 

Comment 1 Shuntaro Yamazaki 2017-05-09 13:02:59 UTC
Can anyone take a look at this report?
Comment 2 Shuntaro Yamazaki 2017-05-09 13:03:20 UTC
Can anyone take a look at this report?
Comment 3 Gael Guennebaud 2017-06-07 08:12:19 UTC
Thank you for the report and patch that I adapted to be more general: (devel) (3.3)
Comment 4 Nobody 2019-12-04 16:55:02 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to'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:

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