[ 
https://issues.apache.org/jira/browse/ARROW-10943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17250710#comment-17250710
 ] 

Greg Bowyer commented on ARROW-10943:
-------------------------------------

It might be unrelated:

 

A hacked version of `miri` (adding in `atomic fetch_max`) has the following 
complaint

 

 
{code:java}
greg@gregslaptop ~/.../rust/parquet $ MIRIFLAGS="-Zmiri-disable-isolation" 
cargo +nightly miri test 'encodings::encoding::tests::test_bool'
   Compiling parquet v3.0.0-SNAPSHOT (/home/greg/projects/arrow/rust/parquet)
    Finished test [unoptimized + debuginfo] target(s) in 1.94s
     Running 
/home/greg/projects/arrow/rust/target/x86_64-unknown-linux-gnu/debug/deps/parquet-9bca74cf6a2c2a95running
 1 test
test encodings::encoding::tests::test_bool ... error: Undefined Behavior: 
accessing memory with alignment 2, but alignment 4 is required
    --> parquet/src/util/bit_packing.rs:84:13
     |
84   |     *out = ((*in_buf) >> 1) & 1;
     |             ^^^^^^^^^ accessing memory with alignment 2, but alignment 4 
is required
     |
     = help: this indicates a bug in the program: it performed an invalid 
operation, and caused Undefined Behavior
     = help: see 
https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html 
for further information     = note: inside `util::bit_packing::unpack1_32` at 
parquet/src/util/bit_packing.rs:84:13
note: inside `util::bit_packing::unpack32` at 
parquet/src/util/bit_packing.rs:36:14
    --> parquet/src/util/bit_packing.rs:36:14
     |
36   |         1 => unpack1_32(in_ptr, out_ptr),
     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `util::bit_util::BitReader::get_batch::<bool>` at 
parquet/src/util/bit_util.rs:554:30
    --> parquet/src/util/bit_util.rs:554:30
     |
554  |                     in_ptr = unpack32(in_ptr, out_ptr, num_bits);
     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `<bool as data_type::private::ParquetValueType>::decode` at 
parquet/src/data_type.rs:684:31
    --> parquet/src/data_type.rs:684:31
     |
684  |             let values_read = bit_reader.get_batch(&mut 
buffer[..num_values], 1);
     |                               
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `<encodings::decoding::PlainDecoder<data_type::BoolType> as 
encodings::decoding::Decoder<data_type::BoolType>>::get` at 
parquet/src/encodings/decoding.rs:197:9
    --> parquet/src/encodings/decoding.rs:197:9
     |
197  |         T::T::decode(buffer, &mut self.inner)
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `encodings::encoding::tests::put_and_get::<data_type::BoolType>` 
at parquet/src/encodings/encoding.rs:1271:9
    --> parquet/src/encodings/encoding.rs:1271:9
     |
1271 |         decoder.get(output)
     |         ^^^^^^^^^^^^^^^^^^^
note: inside `<data_type::BoolType as 
encodings::encoding::tests::EncodingTester<data_type::BoolType>>::test_internal`
 at parquet/src/encodings/encoding.rs:1214:28
    --> parquet/src/encodings/encoding.rs:1214:28
     |
1214 |               actual_total = put_and_get(
     |  ____________________________^
1215 | |                 &mut encoder,
1216 | |                 &mut decoder,
1217 | |                 &values[..],
1218 | |                 &mut result_data[..],
1219 | |             )?;
     | |_____________^
note: inside `<data_type::BoolType as 
encodings::encoding::tests::EncodingTester<data_type::BoolType>>::test` at 
parquet/src/encodings/encoding.rs:1159:24
    --> parquet/src/encodings/encoding.rs:1159:24
     |
1159 |                 enc => Self::test_internal(enc, total, type_length),
     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside `encodings::encoding::tests::test_bool` at 
parquet/src/encodings/encoding.rs:967:9
    --> parquet/src/encodings/encoding.rs:967:9
     |
967  |         BoolType::test(Encoding::PLAIN, TEST_SET_SIZE, -1);
     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
note: inside closure at parquet/src/encodings/encoding.rs:966:5
    --> parquet/src/encodings/encoding.rs:966:5
     |
966  | /     fn test_bool() {
967  | |         BoolType::test(Encoding::PLAIN, TEST_SET_SIZE, -1);
968  | |         BoolType::test(Encoding::PLAIN_DICTIONARY, TEST_SET_SIZE, -1);
969  | |         BoolType::test(Encoding::RLE, TEST_SET_SIZE, -1);
970  | |     }
     | |_____^
     = note: inside <[closure@parquet/src/encodings/encoding.rs:966:5: 970:6] 
as std::ops::FnOnce<()>>::call_once - shim` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
     = note: inside `<fn() as std::ops::FnOnce<()>>::call_once - shim(fn())` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
     = note: inside `test::__rust_begin_short_backtrace::<fn()>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:516:5
     = note: inside closure at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:507:30
     = note: inside `<[closure@test::run_test::{closure#2}] as 
std::ops::FnOnce<()>>::call_once - shim(vtable)` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
     = note: inside `<std::boxed::Box<dyn std::ops::FnOnce() + 
std::marker::Send> as std::ops::FnOnce<()>>::call_once` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:1328:9
     = note: inside `<std::panic::AssertUnwindSafe<std::boxed::Box<dyn 
std::ops::FnOnce() + std::marker::Send>> as std::ops::FnOnce<()>>::call_once` 
at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
     = note: inside 
`std::panicking::r#try::do_call::<std::panic::AssertUnwindSafe<std::boxed::Box<dyn
 std::ops::FnOnce() + std::marker::Send>>, ()>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:379:40
     = note: inside `std::panicking::r#try::<(), 
std::panic::AssertUnwindSafe<std::boxed::Box<dyn std::ops::FnOnce() + 
std::marker::Send>>>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:343:19
     = note: inside 
`std::panic::catch_unwind::<std::panic::AssertUnwindSafe<std::boxed::Box<dyn 
std::ops::FnOnce() + std::marker::Send>>, ()>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
     = note: inside `test::run_test_in_process` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:538:18
     = note: inside closure at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:449:39
     = note: inside `test::run_test::run_test_inner` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:474:13
     = note: inside `test::run_test` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:504:28
     = note: inside 
`test::run_tests::<[closure@test::run_tests_console::{closure#2}]>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:283:13
     = note: inside `test::run_tests_console` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/console.rs:289:5
     = note: inside `test::test_main` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:121:15
     = note: inside `test::test_main_static` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/lib.rs:140:5
     = note: inside `main`
     = note: inside `<fn() as std::ops::FnOnce<()>>::call_once - shim(fn())` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
     = note: inside 
`std::sys_common::backtrace::__rust_begin_short_backtrace::<fn(), ()>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125:18
     = note: inside closure at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:66:18
     = note: inside `std::ops::function::impls::<impl std::ops::FnOnce<()> for 
&dyn std::ops::Fn() -> i32 + std::marker::Sync + 
std::panic::RefUnwindSafe>::call_once` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:259:13
     = note: inside `std::panicking::r#try::do_call::<&dyn std::ops::Fn() -> 
i32 + std::marker::Sync + std::panic::RefUnwindSafe, i32>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:379:40
     = note: inside `std::panicking::r#try::<i32, &dyn std::ops::Fn() -> i32 + 
std::marker::Sync + std::panic::RefUnwindSafe>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panicking.rs:343:19
     = note: inside `std::panic::catch_unwind::<&dyn std::ops::Fn() -> i32 + 
std::marker::Sync + std::panic::RefUnwindSafe, i32>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
     = note: inside `std::rt::lang_start_internal` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:51:25
     = note: inside `std::rt::lang_start::<()>` at 
/home/greg/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:65:5
     = note: this error originates in an attribute macro (in Nightly builds, 
run with -Z macro-backtrace for more info)error: aborting due to previous 
errorerror: test failed, to rerun pass '--lib'`
{code}
 

> [Rust] Intermittent build failure in parquet encoding
> -----------------------------------------------------
>
>                 Key: ARROW-10943
>                 URL: https://issues.apache.org/jira/browse/ARROW-10943
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Rust
>            Reporter: Andy Grove
>            Priority: Major
>
> I saw this test failure locally
> {code:java}
> ---- encodings::encoding::tests::test_bool stdout ----
> thread 'encodings::encoding::tests::test_bool' panicked at 'Invalid byte when 
> reading bool', parquet/src/util/bit_util.rs:73:18
>  {code}
> I ran "cargo test" again and it passed
>  
> We have seen this happen in CI as well



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

Reply via email to