Closed
Description
The same test has failed on Travis in multiple PRs, including at least:
- Rollup of 11 pull requests #49675 (comment)
- Rollup of 8 pull requests #49696 (comment)
- Add GlobalAlloc trait + tweaks for initial stabilization #49669 (comment)
- Merge the std_unicode crate into the core crate #49698 (comment)
I can reproduce on some branches (but not master
) by running RUST_TEST_THREADS=1 src/ci/docker/run.sh arm-android
. The end of the output looks like:
test atomic::int_nand ... ok
test atomic::int_or ... ok
test atomic::int_xor ... ok
test atomic::static_init ... died due to signal 11
error: test failed, to rerun pass '--test coretests'
command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "test" "--target" "arm-linux-androideabi" "-j" "8" "--release" "--locked" "--features" "panic-unwind jemalloc backtrace" "--manifest-path" "/checkout/src/libstd/Cargo.toml" "-p" "core" "--"
expected success, got: exit code: 3
failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test --target arm-linux-androideabi
Which means the test process dies with “SIGSEGV Invalid memory reference” while executing this test:
static S_FALSE: AtomicBool = AtomicBool::new(false);
static S_TRUE: AtomicBool = AtomicBool::new(true);
static S_INT: AtomicIsize = AtomicIsize::new(0);
static S_UINT: AtomicUsize = AtomicUsize::new(0);
#[test]
fn static_init() {
assert!(!S_FALSE.load(SeqCst));
assert!(S_TRUE.load(SeqCst));
assert!(S_INT.load(SeqCst) == 0);
assert!(S_UINT.load(SeqCst) == 0);
}
I haven’t figured out how to use gdb inside the Android emulator inside Docker to debug this further.
CC @alexcrichton, @rust-lang/release