rust
rust copied to clipboard
AArch64 benchmarking assertion failure
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
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