dimforge / simba

Set of mathematical traits to facilitate the use of SIMD-based AoSoA (Array of Struct of Array) storage pattern.
Apache License 2.0
293 stars 29 forks source link

Build fail with any sanitizer #39

Open Yuri6037 opened 2 years ago

Yuri6037 commented 2 years ago

When building any project which imports nalgebra with nightly and a sanitizer you get a HUGE amount of build errors.

Command I used to build

The same thing happens with Zsanitizer=thread

Toolchain version

OS/Hardware

Log

Due to how large the log is I could not add all of it so I only added the first 168 lines, all other lines are very similar.

``` Compiling simba v0.7.0 error: /home/yuri/Projects/threaded-bilateral-filter/target/debug/deps/libpaste-4d6a3c29c1b84e5f.so: undefined symbol: __asan_option_detect_stack_use_after_return --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:23:9 | 23 | paste::item! { | ^^^^^ error: cannot determine resolution for the macro `paste::item` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:23:9 | 23 | paste::item! { | ^^^^^^^^^^^ | ::: /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/simd/simd_complex.rs:33:5 | 33 | complex_trait_methods!(SimdRealField, simd_); | -------------------------------------------- in this macro invocation | = note: import resolution is stuck, try simplifying macro imports = note: this error originates in the macro `complex_trait_methods` (in Nightly builds, run with -Z macro-backtrace for more info) error: cannot determine resolution for the macro `paste::item` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:23:9 | 23 | paste::item! { | ^^^^^^^^^^^ ... 186 | complex_trait_methods!(RealField); | --------------------------------- in this macro invocation | = note: import resolution is stuck, try simplifying macro imports = note: this error originates in the macro `complex_trait_methods` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `from_real` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:199:13 | 199 | / fn from_real(re: Self::RealField) -> Self { 200 | | re 201 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `real` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:204:13 | 204 | / fn real(self) -> Self::RealField { 205 | | self 206 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `imaginary` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:209:13 | 209 | / fn imaginary(self) -> Self::RealField { 210 | | Self::zero() 211 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `norm1` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:214:13 | 214 | / fn norm1(self) -> Self::RealField { 215 | | $libm::abs(self) 216 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `modulus` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:219:13 | 219 | / fn modulus(self) -> Self::RealField { 220 | | $libm::abs(self) 221 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `modulus_squared` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:224:13 | 224 | / fn modulus_squared(self) -> Self::RealField { 225 | | self * self 226 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `argument` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:229:13 | 229 | / fn argument(self) -> Self::RealField { 230 | | if self >= Self::zero() { 231 | | Self::zero() 232 | | } else { 233 | | Self::pi() 234 | | } 235 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0407]: method `to_exp` is not a member of trait `ComplexField` --> /home/yuri/.cargo/registry/src/github.com-1ecc6299db9ec823/simba-0.7.0/src/scalar/complex.rs:238:13 | 238 | / fn to_exp(self) -> (Self, Self) { 239 | | if self >= Self::zero() { 240 | | (self, Self::one()) 241 | | } else { 242 | | (-self, -Self::one()) 243 | | } 244 | | } | |_____________^ not a member of trait `ComplexField` ... 491 | / impl_complex!( 492 | | f32,f32,f32; 493 | | f64,f64,f64 494 | | ); | |_- in this macro invocation | = note: this error originates in the macro `impl_complex` (in Nightly builds, run with -Z macro-backtrace for more info) ```
sebcrozet commented 2 years ago

Hi! If this doesn’t compile with RUSTFLAGS=-Zsanitizer=address RUSTDOCFLAGS=-Zsanitizer=address but compiles fine if you don’t add these sanitizer options, then the problem is probably in the sanitizer implementation than in simba itself.