mhilton opened a new issue, #6206:
URL: https://github.com/apache/arrow-rs/issues/6206

   **Describe the bug**
   If one applies a `take` kernel to a densely packed union then it is possible 
reach an `unreachable!` code branch. This causes a panic.
   
   **To Reproduce**
   The smallest reproducer I could find is the following application:
   
   ```rust
   use arrow::{
       array::{Int64Array, UnionArray},
       buffer::ScalarBuffer,
       compute::take,
       datatypes::{DataType, Field, UnionFields},
   };
   use std::sync::Arc;
   
   fn main() {
       let fields = UnionFields::new(vec![0], vec![Field::new("a", 
DataType::Int64, false)]);
       let ints = Arc::new(Int64Array::from(vec![1, 2, 3, 4, 5]));
   
       let array = UnionArray::try_new(
           fields,
           ScalarBuffer::from_iter(vec![0_i8, 0, 0, 0, 0].into_iter()),
           Some(ScalarBuffer::from_iter(0_i32..5)),
           vec![ints],
       )
       .unwrap();
   
       let indicies = Int64Array::from(vec![0, 2, 4]);
       let array = take(&array, &indicies, None).unwrap();
       assert_eq!(array.len(), 3);
   }
   ```
   
   **Expected behavior**
   The `take` kernel should take the requested values from the `UnionArray`. 
   
   **Additional context**
   Here's the full backtrace of the panic:
   
   ```
   thread 'main' panicked at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/filter.rs:548:61:
   internal error: entered unreachable code
   stack backtrace:
      0:        0x102282d38 - 
std::backtrace_rs::backtrace::libunwind::trace::h6196ef3b0a4e77ef
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5
      1:        0x102282d38 - 
std::backtrace_rs::backtrace::trace_unsynchronized::hac375eab426f00dd
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
      2:        0x102282d38 - 
std::sys_common::backtrace::_print_fmt::h2a4f1f15852b7d46
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:68:5
      3:        0x102282d38 - 
<std::sys_common::backtrace::_print::DisplayBacktrace as 
core::fmt::Display>::fmt::h205eab4daa59a56a
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:44:22
      4:        0x10229c2d8 - core::fmt::rt::Argument::fmt::h391b30ab7a26d7be
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/fmt/rt.rs:165:63
      5:        0x10229c2d8 - core::fmt::write::ha28d0fbf1a1eeba9
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/fmt/mod.rs:1168:21
      6:        0x102281078 - std::io::Write::write_fmt::h54f6960924d6c6c0
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/io/mod.rs:1835:15
      7:        0x102282b90 - 
std::sys_common::backtrace::_print::hfe43851cb14e36df
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:47:5
      8:        0x102282b90 - 
std::sys_common::backtrace::print::hb748761a345859f9
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:34:9
      9:        0x102283d68 - 
std::panicking::default_hook::{{closure}}::h6cb9ca91838de054
     10:        0x102283a34 - std::panicking::default_hook::h83345dc5126de57b
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:298:9
     11:        0x102284614 - 
std::panicking::rust_panic_with_hook::h9305dc63490c537b
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:795:13
     12:        0x102284024 - 
std::panicking::begin_panic_handler::{{closure}}::h0d6c6c01f5801c1a
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:656:13
     13:        0x1022831bc - 
std::sys_common::backtrace::__rust_end_short_backtrace::h2ace9f7ada66a76a
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:171:18
     14:        0x102283dc0 - rust_begin_unwind
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:652:5
     15:        0x1022a8188 - core::panicking::panic_fmt::hf3031f82c202a80d
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:72:14
     16:        0x1022a8208 - core::panicking::panic::hfb97fcfe2d432218
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/panicking.rs:146:5
     17:        0x102169458 - 
arrow_select::filter::filter_native::h9f28851713a0b08f
                                  at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/filter.rs:548:61
     18:        0x102169930 - 
arrow_select::filter::filter_primitive::hcdf550095906b537
                                  at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/filter.rs:563:18
     19:        0x102112f88 - 
arrow_select::take::take_impl::{{closure}}::h239177a4c6a8bec8
                                  at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/take.rs:256:35
     20:        0x102121220 - 
core::iter::adapters::map::map_try_fold::{{closure}}::hab6993c506059229
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/map.rs:96:28
     21:        0x102120e40 - 
core::iter::adapters::map::map_try_fold::{{closure}}::h3d41d09047cc2b32
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/map.rs:96:21
     22:        0x10206995c - 
core::iter::traits::iterator::Iterator::try_fold::h72e753c0a4af1044
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/traits/iterator.rs:2411:21
     23:        0x10211aef4 - <core::iter::adapters::map::Map<I,F> as 
core::iter::traits::iterator::Iterator>::try_fold::h75e4ab88b8caf0c6
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/map.rs:122:9
     24:        0x10211ae00 - <core::iter::adapters::map::Map<I,F> as 
core::iter::traits::iterator::Iterator>::try_fold::h3043137ca45b49b3
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/map.rs:122:9
     25:        0x10214eb84 - <core::iter::adapters::GenericShunt<I,R> as 
core::iter::traits::iterator::Iterator>::try_fold::h5e2f7ab5cb4ee7b9
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/mod.rs:204:9
     26:        0x10214e530 - 
core::iter::traits::iterator::Iterator::try_for_each::h597277cdd977e2d5
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/traits/iterator.rs:2473:9
     27:        0x10214e530 - <core::iter::adapters::GenericShunt<I,R> as 
core::iter::traits::iterator::Iterator>::next::h8aa312b9f15e2e1c
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/mod.rs:187:14
     28:        0x102083ea0 - <alloc::vec::Vec<T> as 
alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter::h3cd7e10537f2b4ae
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/vec/spec_from_iter_nested.rs:26:32
     29:        0x1020a7598 - <alloc::vec::Vec<T> as 
alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter::h7b756cb59644d8d3
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/vec/spec_from_iter.rs:33:9
     30:        0x1020a4320 - <alloc::vec::Vec<T> as 
core::iter::traits::collect::FromIterator<T>>::from_iter::h41de20caa2f31fb6
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/alloc/src/vec/mod.rs:2970:9
     31:        0x10215c8c0 - 
core::iter::traits::iterator::Iterator::collect::h0512061a5d22f37a
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/traits/iterator.rs:2005:9
     32:        0x10215c8c0 - <core::result::Result<V,E> as 
core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::{{closure}}::ha43fd813a35c4443
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/result.rs:1960:51
     33:        0x1021589a8 - 
core::iter::adapters::try_process::h9354d10d3933a934
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/adapters/mod.rs:173:17
     34:        0x10215c5fc - <core::result::Result<V,E> as 
core::iter::traits::collect::FromIterator<core::result::Result<A,E>>>::from_iter::h20cdeefd686d375a
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/result.rs:1960:9
     35:        0x10211dc18 - 
core::iter::traits::iterator::Iterator::collect::h5c9250783e455d9f
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/iter/traits/iterator.rs:2005:9
     36:        0x1020d98dc - arrow_select::take::take_impl::hba5b9c3fe0878180
                                  at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/take.rs:251:28
     37:        0x1020c7d1c - arrow_select::take::take::h3cb3133ebe3f2b5b
                                  at 
/Users/mhilton/.cargo/registry/src/index.crates.io-6f17d22bba15001f/arrow-select-52.2.0/src/take.rs:93:5
     38:        0x102063a2c - 
arrow_dense_array_unreachable::main::h12476859da44638b
                                  at 
/Users/mhilton/src/arrow-dense-array-unreachable/src/main.rs:22:17
     39:        0x102063dd0 - 
core::ops::function::FnOnce::call_once::ha22a648cd6586e3f
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
     40:        0x102064850 - 
std::sys_common::backtrace::__rust_begin_short_backtrace::hcd25cd6cbcb964af
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/sys_common/backtrace.rs:155:18
     41:        0x1020648e4 - 
std::rt::lang_start::{{closure}}::he4496dc4748c591b
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/rt.rs:159:18
     42:        0x10227f740 - core::ops::function::impls::<impl 
core::ops::function::FnOnce<A> for &F>::call_once::h9ac6e053b27a4e69
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:284:13
     43:        0x10227f740 - std::panicking::try::do_call::h09e23e6341cf3ffa
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
     44:        0x10227f740 - std::panicking::try::hecb687885b834f0b
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
     45:        0x10227f740 - std::panic::catch_unwind::hf02037d5d7fd99df
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
     46:        0x10227f740 - 
std::rt::lang_start_internal::{{closure}}::h2cb5afb5064cd3ee
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/rt.rs:141:48
     47:        0x10227f740 - std::panicking::try::do_call::h15529d58e6f83876
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:559:40
     48:        0x10227f740 - std::panicking::try::h393140c707be8ad0
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panicking.rs:523:19
     49:        0x10227f740 - std::panic::catch_unwind::h344c598b74f77cdb
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/panic.rs:149:14
     50:        0x10227f740 - std::rt::lang_start_internal::hd3ad173a069f2ae5
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/rt.rs:141:20
     51:        0x1020648b0 - std::rt::lang_start::h6054b03865accfe8
                                  at 
/rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/std/src/rt.rs:158:17
     52:        0x102063c78 - _main
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to