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

   **Describe the bug**
   <!--
   A clear and concise description of what the bug is.
   -->
   
   See here:
   
   
https://github.com/apache/arrow-rs/blob/f621d28db590ff6ad3907450f7ff434c7deb9766/.github/workflows/miri.sh#L1-L18
   
   Without `set -e` setting then bash script will continue even if earlier 
commands fail, with the return value of the script being the last command.
   
   **To Reproduce**
   <!--
   Steps to reproduce the behavior:
   -->
   
   **Expected behavior**
   <!--
   A clear and concise description of what you expected to happen.
   -->
   
   Should fail Miri CI check for any failure in the script
   
   **Additional context**
   <!--
   Add any other context about the problem here.
   -->
   
   Could fix by adding `set -e` at the top, but seems like some Miri checks are 
failing due to unsupported operations, e.g.
   
   ```
   error: unsupported operation: inline assembly is not supported
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/div.rs:196:9
       |
   196 | /         std::arch::asm!(
   197 | |             "div {divisor}",
   198 | |             divisor = in(reg) divisor,
   199 | |             inout("rax") quot,
   200 | |             inout("rdx") rem,
   201 | |             options(pure, nomem, nostack)
   202 | |         );
       | |_________^ inline assembly is not supported
       |
       = help: this is likely not a bug in the program; it indicates that the 
program performed an operation that the interpreter does not support
       = note: BACKTRACE:
       = note: inside `arrow_buffer::bigint::div::div_rem_word` at 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/div.rs:196:9: 202:10
   note: inside closure
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/div.rs:65:22
       |
   65  |         let (q, r) = div_rem_word(rem, *d, divisor);
       |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       = note: inside closure at 
/home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:855:29:
 855:36
       = note: inside `<std::slice::IterMut<'_, u64> as 
std::iter::DoubleEndedIterator>::rfold::<(), 
{closure@std::iter::Iterator::for_each::call<&mut u64, 
{closure@arrow_buffer::bigint::div::div_rem_small<4>::{closure#0}}>::{closure#0}}>`
 at 
/home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/double_ended.rs:307:21:
 307:32
       = note: inside `<std::iter::Rev<std::slice::IterMut<'_, u64>> as 
std::iter::Iterator>::fold::<(), 
{closure@std::iter::Iterator::for_each::call<&mut u64, 
{closure@arrow_buffer::bigint::div::div_rem_small<4>::{closure#0}}>::{closure#0}}>`
 at 
/home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/adapters/rev.rs:64:9:
 64:33
       = note: inside `<std::iter::Rev<std::slice::IterMut<'_, u64>> as 
std::iter::Iterator>::for_each::<{closure@arrow_buffer::bigint::div::div_rem_small<4>::{closure#0}}>`
 at 
/home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/iter/traits/iterator.rs:858:9:
 858:31
   note: inside `arrow_buffer::bigint::div::div_rem_small::<4>`
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/div.rs:64:5
       |
   64  | /     numerator.iter_mut().rev().for_each(|d| {
   65  | |         let (q, r) = div_rem_word(rem, *d, divisor);
   66  | |         *d = q;
   67  | |         rem = r;
   68  | |     });
       | |______^
   note: inside `arrow_buffer::bigint::div::div_rem::<4>`
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/div.rs:39:16
       |
   39  |         return div_rem_small(numerator, divisor[0]);
       |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside `arrow_buffer::i256::div_rem`
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/mod.rs:444:26
       |
   444 |         let (div, rem) = div_rem(&a.as_digits(), &b.as_digits());
       |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside `arrow_buffer::i256::wrapping_div`
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-buffer/src/bigint/mod.rs:483:15
       |
   483 |         match self.div_rem(other) {
       |               ^^^^^^^^^^^^^^^^^^^
   note: inside `<arrow_buffer::i256 as 
arrow_array::ArrowNativeTypeOp>::div_wrapping`
      --> 
/home/runner/work/arrow-rs/arrow-rs/arrow-array/src/arithmetic.rs:273:1
       |
   273 | native_type_op!(i256, i256::ZERO, i256::ONE);
       | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside 
`arithmetic::divide_and_round::<arrow_array::types::Decimal256Type>`
      --> arrow-arith/src/arithmetic.rs:179:13
       |
   179 |     let d = input.div_wrapping(div);
       |             ^^^^^^^^^^^^^^^^^^^^^^^
   note: inside closure
      --> arrow-arith/src/arithmetic.rs:123:15
       |
   123 |         mul = divide_and_round::<Decimal256Type>(mul, divisor);
       |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside 
`arity::try_binary_no_nulls::<&arrow_array::PrimitiveArray<arrow_array::types::Decimal128Type>,
 &arrow_array::PrimitiveArray<arrow_array::types::Decimal128Type>, 
{closure@arrow-arith/src/arithmetic.rs:118:56: 118:62}, 
arrow_array::types::Decimal128Type>`
      --> arrow-arith/src/arity.rs:393:35
       |
   393 |             buffer.push_unchecked(op(a.value_unchecked(idx), 
b.value_unchecked(idx))?);
       |                                   
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside 
`arity::try_binary::<&arrow_array::PrimitiveArray<arrow_array::types::Decimal128Type>,
 &arrow_array::PrimitiveArray<arrow_array::types::Decimal128Type>, 
{closure@arrow-arith/src/arithmetic.rs:118:56: 118:62}, 
arrow_array::types::Decimal128Type>`
      --> arrow-arith/src/arity.rs:293:9
       |
   293 |         try_binary_no_nulls(len, a, b, op)
       |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside `arithmetic::multiply_fixed_point_checked`
      --> arrow-arith/src/arithmetic.rs:118:5
       |
   118 | /     try_binary::<_, _, _, Decimal128Type>(left, right, |a, b| {
   119 | |         let a = i256::from_i128(a);
   120 | |         let b = i256::from_i128(b);
   121 | |
   ...   |
   126 | |         })
   127 | |     })
       | |______^
   note: inside `arithmetic::tests::test_decimal_multiply_allow_precision_loss`
      --> arrow-arith/src/arithmetic.rs:217:22
       |
   217 |         let result = multiply_fixed_point_checked(&a, &b, 28).unwrap();
       |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   note: inside closure
      --> arrow-arith/src/arithmetic.rs:199:52
       |
   198 |     #[test]
       |     ------- in this procedural macro expansion
   199 |     fn test_decimal_multiply_allow_precision_loss() {
       |                                                    ^
       = note: this error originates in the macro `native_type_op` which comes 
from the expansion of the attribute macro `test` (in Nightly builds, run with 
-Z macro-backtrace for more info)
   
   note: some details are omitted, run with `MIRIFLAGS=-Zmiri-backtrace=full` 
for a verbose backtrace
   
   error: aborting due to 1 previous error; 1 warning emitted
   
   error: test failed, to rerun pass `-p arrow-arith --lib`
   
   Caused by:
     process didn't exit successfully: 
`/home/runner/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/cargo-miri
 runner 
/home/runner/work/arrow-rs/arrow-rs/target/miri/x86_64-unknown-linux-gnu/debug/deps/arrow_arith-935c019359b6f7a3`
 (exit status: 1)
   note: test exited abnormally; to see the full output pass --nocapture to the 
harness.
   ```
   
   Of the crates that run Miri:
   
   ```shell
   cargo miri test -p arrow-buffer                              # Succeeds
   cargo miri test -p arrow-data --features ffi          # Succeeds
   cargo miri test -p arrow-schema --features ffi    # Succeeds
   cargo miri test -p arrow-array                                # Fails
   cargo miri test -p arrow-arith --features simd     # Fails
   cargo miri test -p arrow-ord                                    # Succeeds
   ```
   
   Note that parquet crate also suffers failure when running Miri due to 
unsupported operation https://github.com/apache/arrow-rs/issues/614


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to