-
Notifications
You must be signed in to change notification settings - Fork 181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use of Eigen causes segmentation faults in digitization reader #4049
Comments
Are we sure it's the same Eigen version? |
Yes, I've quadruple tested this. Writing down some findings for posterity.
It is clear that we are tying to store one AVX-512 register (of width 512 bits, i.e. 64 bytes) to
So we know that this transform starts exactly 32 bytes (4 doubles) before the invalid access, and this matrix is perfectly well aligned to 64 bytes. So Eigen is, for whatever reason, trying to insert a 64-byte-alignent-requiring store on a 64-byte-aligned matrix, but it is issuing it 32 bytes after the beginning of the matrix, thereby destroying the alignment. |
As I discovered in acts-project#4049, having Eigen3 types on ABI boundaries invites a variety of compiler issues. In cases where ACTS and the depending project are compiled with different vectorization instruction sets, the ABIs become incompatible with each other, because the matrices are differently aligned. This commit adds the `ACTS_ENFORCE_EIGEN3_ALIGNMENT` flag which, if enabled, will encode the Eigen3 alignment in the ACTS shared object, and the ACTS `find_package` code will then attempt to read this and set it appropriately on any dependent targets. Closes acts-project#4049.
As I discovered in acts-project#4049, having Eigen3 types on ABI boundaries invites a variety of compiler issues. In cases where ACTS and the depending project are compiled with different vectorization instruction sets, the ABIs become incompatible with each other, because the matrices are differently aligned. This commit adds the `ACTS_ENFORCE_EIGEN3_ALIGNMENT` flag which, if enabled, will encode the Eigen3 alignment in the ACTS shared object, and the ACTS `find_package` code will then attempt to read this and set it appropriately on any dependent targets. Closes acts-project#4049.
As I discovered in acts-project#4049, having Eigen3 types on ABI boundaries invites a variety of compiler issues. In cases where ACTS and the depending project are compiled with different vectorization instruction sets, the ABIs become incompatible with each other, because the matrices are differently aligned. This commit adds the `ACTS_ENFORCE_EIGEN3_ALIGNMENT` flag which, if enabled, will encode the Eigen3 alignment in the ACTS shared object, and the ACTS `find_package` code will then attempt to read this and set it appropriately on any dependent targets. Closes acts-project#4049.
As I discovered in acts-project#4049, having Eigen3 types on ABI boundaries invites a variety of compiler issues. In cases where ACTS and the depending project are compiled with different vectorization instruction sets, the ABIs become incompatible with each other, because the matrices are differently aligned. This commit adds the `ACTS_ENFORCE_EIGEN3_ALIGNMENT` flag which, if enabled, will encode the Eigen3 alignment in the ACTS shared object, and the ACTS `find_package` code will then attempt to read this and set it appropriately on any dependent targets. Closes acts-project#4049.
test comment |
When using an installed version of ACTS with the JSON libraries, i.e. compiled and installed to the filesystem and then loaded via
find_package
, I am observing a segmentation fault related to the use of an Eigen matrix in the reading of the digitization configuration:The backtrace looks as follows:
This suggests to me that we are somehow configuring Eigen in a specific way when compiling the digitization code and then slightly differently downstream; for example because some compiler flag might not be properly propagated outwards.
Has anyone encountered such issues before?
The text was updated successfully, but these errors were encountered: