Hi all!

I compile an application using Eigen with clang address sanitizer, and run this 
application but hit a SEGV.

I see there was a bug "GCC address sanitizer breaks 16-byte alignment of glibc 
malloc" (https://eigen.tuxfamily.org/bz/show_bug.cgi?id=552). It seems this is 
a same issue with the gcc one.

In 
https://gitlab.com/libeigen/eigen/-/commit/b6dc2613acbb4659988eb3237225bb0974d85d52
we use macro __SANITIZE_ADDRESS__ to detect if Eigen is compiled with address 
sanitizer, but clang do not recognize this macro, clang use 
__has_feature(address_sanitizer).

To verify, I'm manually define EIGEN_MALLOC_ALREADY_ALIGNED to 0 and build with 
clang address sanitizer again. However, this time address sanitizer reports 
SEGV again.

The SEGV is caused by Eigen::internal::pstore(double* to, double vector[4] 
const& from), when we call _mm256_store_pd(to, from), the address of to is not 
aligned to 32.

Is there anyone hit a similar issue or is there anyone tried building and 
running an application using Eigen with clang address sanitizer instrumented ?

Best,
Xu Mingjie

Reply via email to