You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The simd arithmetic kernels use the following pattern repeatedly:
foriin (0..left.len()).step_by(lanes) { ... }
If len is not a multiple of the number of lanes, this would read out of bounds in the last iteration. Currently, all buffers have an additional padding of 64 bytes (equal to the simd width), which masks this problem in most tests. As soon as we use a slice of an array, it should however be reproducible even with this padding.
Even without a crash, the issue is detectable with valgrind:
==31106== Invalidreadofsize32
==31106== at0x1ECEE1: arrow::compute::kernels::arithmetic::add::hfded8b2c06cf22de (in /home/joernhorstmann/Source/github/apache/arrow/rust/target/release/deps/arrow-205580f93d58d5a9)
==31106== by0x2650EF: arrow::compute::kernels::arithmetic::tests::test_arithmetic_kernel_should_not_rely_on_padding::hacb7c7921dc38e6a (in /home/joernhorstmann/Source/github/apache/arrow/rust/target/release/deps/arrow-205580f93d58d5a9)
The simd arithmetic kernels use the following pattern repeatedly:
If len is not a multiple of the number of lanes, this would read out of bounds in the last iteration. Currently, all buffers have an additional padding of 64 bytes (equal to the simd width), which masks this problem in most tests. As soon as we use a slice of an array, it should however be reproducible even with this padding.
Even without a crash, the issue is detectable with valgrind:
Reporter: Jörn Horstmann / @jhorstmann
Assignee: Jörn Horstmann / @jhorstmann
PRs and other links:
Note: This issue was originally created as ARROW-10914. Please see the migration documentation for further details.
The text was updated successfully, but these errors were encountered: