You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Jorge Leitão (Jira)" <ji...@apache.org> on 2020/12/19 08:52:00 UTC

[jira] [Resolved] (ARROW-10914) [Rust]: SIMD implementation of arithmetic kernels reads out of bounds

     [ https://issues.apache.org/jira/browse/ARROW-10914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jorge Leitão resolved ARROW-10914.
----------------------------------
    Fix Version/s: 3.0.0
       Resolution: Fixed

Issue resolved by pull request 8929
[https://github.com/apache/arrow/pull/8929]

> [Rust]: SIMD implementation of arithmetic kernels reads out of bounds
> ---------------------------------------------------------------------
>
>                 Key: ARROW-10914
>                 URL: https://issues.apache.org/jira/browse/ARROW-10914
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Rust
>            Reporter: Jörn Horstmann
>            Assignee: Jörn Horstmann
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.0.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> The simd arithmetic kernels use the following pattern repeatedly:
> {code}
>     for i in (0..left.len()).step_by(lanes) { ... }
> {code}
> 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:
> {code}
> ==31106== Invalid read of size 32
> ==31106==    at 0x1ECEE1: arrow::compute::kernels::arithmetic::add::hfded8b2c06cf22de (in /home/joernhorstmann/Source/github/apache/arrow/rust/target/release/deps/arrow-205580f93d58d5a9)
> ==31106==    by 0x2650EF: 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)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)