rust icon indicating copy to clipboard operation
rust copied to clipboard

AArch64 benchmarking assertion failure

Open AdamNiederer opened this issue 7 years ago • 1 comments

Repro:

#![cfg_attr(test, feature(test))]
#[cfg(test)] extern crate test;

#[cfg(test)]
mod tests {
    use test::{Bencher, black_box};

    #[bench]
    fn bench_map_scalar(b: &mut Bencher) {
        b.iter(|| {
            black_box(1)
        });
    }
}

.cargo/config

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
ar = "aarch64-linux-gnu-ar"
runner = "qemu-aarch64 -L /usr/aarch64-linux-gnu"

Outputs:

$ RUST_BACKTRACE=1 cargo bench
   Compiling aarch64-libtest-busted v0.1.0 (file:///home/adam/aarch64-libtest-busted)
    Finished release [optimized] target(s) in 0.94 secs
     Running target/release/deps/aarch64_libtest_busted-1c6093a510eef424

running 1 test
test tests::bench_map_scalar ... bench:           0 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out
$ RUST_BACKTRACE=1 cargo bench --target=aarch64-unknown-linux-gnu
    Finished release [optimized] target(s) in 0.0 secs
     Running target/aarch64-unknown-linux-gnu/release/deps/aarch64_libtest_busted-51d12e210b730146

running 1 test
test tests::bench_map_scalar ... thread 'main' panicked at 'assertion failed: pct <= hundred', /checkout/src/libtest/stats.rs:293:4
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at /checkout/src/libstd/sys_common/backtrace.rs:68
             at /checkout/src/libstd/sys_common/backtrace.rs:57
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/panicking.rs:381
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:397
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:577
   5: std::panicking::begin_panic
             at /checkout/src/libstd/panicking.rs:538
   6: test::stats::percentile_of_sorted
             at /checkout/src/libtest/stats.rs:293
   7: test::stats::winsorize
             at /checkout/src/libtest/stats.rs:318
   8: aarch64_libtest_busted::tests::bench_map_scalar
   9: test::run_test
             at /checkout/src/libtest/lib.rs:1486
             at /checkout/src/libtest/lib.rs:1617
  10: test::run_tests_console
             at /checkout/src/libtest/lib.rs:1188
             at /checkout/src/libtest/lib.rs:975
  11: test::test_main
             at /checkout/src/libtest/lib.rs:291
  12: test::test_main_static
             at /checkout/src/libtest/lib.rs:327
  13: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:101
  14: std::rt::lang_start
             at /checkout/src/libstd/panicking.rs:459
             at /checkout/src/libstd/rt.rs:58
  15: main
  16: __libc_start_main
error: bench failed
$ rustc --version
rustc 1.24.0-nightly (dc39c3169 2017-12-17)
$ cargo --version
cargo 0.25.0-nightly (930f9d949 2017-12-05)

Offending assertion is here

AdamNiederer avatar Dec 19 '17 20:12 AdamNiederer

I cannot reproduce this on Ubuntu 22.04 amd64 under qemu-aarch64 version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.3) using either current nightly or nightly-2017-12-18. Can you still reproduce this? If so, what QEMU version are you using? (I believe QEMU 2.11 (or close to that) was the latest around when this was posted).

$ qemu-aarch64 --version
qemu-aarch64 version 6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.3)
Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
$ rustc +nightly --version --verbose
rustc 1.66.0-nightly (8ce3204af 2022-09-30)
binary: rustc
commit-hash: 8ce3204af9463db3192ea1eb31c45c2f6d4b5ae6
commit-date: 2022-09-30
host: x86_64-unknown-linux-gnu
release: 1.66.0-nightly
LLVM version: 15.0.2
$ cargo +nightly bench --target aarch64-unknown-linux-gnu 
    Finished bench [optimized] target(s) in 0.00s
     Running unittests src/main.rs (target/aarch64-unknown-linux-gnu/release/deps/rust_46850-4e6b47a44975fd88)

running 1 test
test tests::bench_map_scalar ... bench:           1 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out; finished in 0.37s

$ rustc +nightly-2017-12-18 --version --verbose
rustc 1.24.0-nightly (dc39c3169 2017-12-17)
binary: rustc
commit-hash: dc39c31699a83313edf2ac096d0bf3cef871b705
commit-date: 2017-12-17
host: x86_64-unknown-linux-gnu
release: 1.24.0-nightly
LLVM version: 4.0
$ cargo +nightly-2017-12-18 bench --target aarch64-unknown-linux-gnu 
warning: unused manifest key: package.edition
    Finished release [optimized] target(s) in 0.0 secs
     Running target/aarch64-unknown-linux-gnu/release/deps/rust_46850-03a8c8d252b37ebe

running 1 test
test tests::bench_map_scalar ... bench:           4 ns/iter (+/- 0)

test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured; 0 filtered out

zachs18 avatar Oct 10 '22 08:10 zachs18