Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign up"died due to signal 11" in collectionstests on arm-android #55861
Comments
kennytm
added
O-android
A-spurious
T-infra
C-tracking-issue
labels
Nov 11, 2018
This comment has been minimized.
This comment has been minimized.
|
Added #55052 (comment) to the list |
alexcrichton
referenced this issue
Nov 12, 2018
Merged
Use read_unaligned instead of read in transmute_copy #55052
This was referenced Nov 27, 2018
kennytm
referenced this issue
Dec 22, 2018
Merged
Use compiletest timestamp to check if the tests should be rerun. #56680
ehuss
referenced this issue
Dec 28, 2018
Merged
submodules: update clippy from fc24fce7 to 721f688e #57138
pietroalbini
referenced this issue
Jan 7, 2019
Merged
NLL: Fix bug in associated constant type annotations. #57304
davidtwco
referenced this issue
Jan 9, 2019
Merged
NLL: Add union justifications to conflicting borrows. #57102
pietroalbini
referenced this issue
Jan 10, 2019
Merged
Don't actually create a full MIR stack frame when not needed #57351
This was referenced Feb 4, 2019
This comment has been minimized.
This comment has been minimized.
|
I suspect #56869 (comment) on i686-musl is the same as this issue. Perhaps we should run the collectiontest in miri.
The stacktrace doesn't seem meaningful. |
kennytm
added
the
I-nominated
label
Feb 7, 2019
kennytm
added
the
E-help-wanted
label
Feb 12, 2019
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
We've asked for help on internals: https://internals.rust-lang.org/t/help-wanted-to-debug-a-segfault-in-a-standard-library-test-on-android/9428 |
This comment has been minimized.
This comment has been minimized.
|
I've managed to reproduce this locally, using the same Android emulator used by CI. I'm working on creating a self-contained script to make it easy to test this locally. |
This comment has been minimized.
This comment has been minimized.
|
I believe I've obtained a backtrace from the emulator:
Interestingly enough, it appears that the process actually hangs in the emulator, rather than dying. This allowed me to install gdb and connect the process after the test had failed. |
This comment has been minimized.
This comment has been minimized.
|
I strongly suspect that this is related to the |
This comment has been minimized.
This comment has been minimized.
|
Some additional results: I added the following script as a test (it contains some logic from use std::cell::Cell;
use std::thread;
use std::panic;
thread_local!(static SILENCE_PANIC: Cell<bool> = Cell::new(false));
#[test]
fn test_panic_hook() {
let prev = panic::take_hook();
panic::set_hook(Box::new(move |info| {
if !SILENCE_PANIC.with(|s| s.get()) {
prev(info);
}
}));
for i in 0..1000 {
let _ = thread::spawn(move || {
SILENCE_PANIC.with(|s| s.set(true));
panic!("Panicked from thread: {}", i);
}).join();
}
println!("All done!");
}I then manually uploaded it to the emulator, and invoked it in a loop with the following Bash script (run from
After running this for about 15-20 minutes, I stopped the loop. For reasons I don't yet understand, several of the spawned processes has segfaulted, wthout stopping the loop. I then uploaded a static GDB binary from here to the emulator (this was the only way I could manage to get GDB to work). I managed to obtain the following backtrace from my test program:
From what I can see, the panic hook appears to be executing, and then somehow jumping back into the body of the loop. EDIT: I believe that this is actually showing the normal invocation of my test function. Note that this was the only thread running. I'm not sure if this is related to the original issue, but it suggets that something weird is going on with the panicking threads. My current hypothesis is that there's some sort of concurrency and/or codegen issue with the the |
This comment has been minimized.
This comment has been minimized.
|
Further evidence for panicking being involved: Another run crashed with this log (I wasn't able to obtain a backtrace):
The test immediately following |
pietroalbini
referenced this issue
Feb 20, 2019
Merged
make generalization code create new variables in correct universe #58056
This comment has been minimized.
This comment has been minimized.
|
Thanks @Aaron1011! We discussed this in the infra team meeting today and decided that we would disable the should_panic tests on Android. This'll basically be a |
This comment has been minimized.
This comment has been minimized.
|
I'm temporarily assigning this to myself -- I plan to add that cfg soon. Of course, if someone wants to take that on and save me some time, I'd be happy :) |
Mark-Simulacrum
self-assigned this
Feb 26, 2019
This comment has been minimized.
This comment has been minimized.
|
I'm going to use the functionality added in #58689 instead of a cfg-gate across all of std/test/alloc -- that seems quite a bit cleaner. |
Mark-Simulacrum
referenced this issue
Mar 3, 2019
Closed
Ignore should_panic tests on android #58900
This comment has been minimized.
This comment has been minimized.
|
Posted #58900 and unassigning myself. That PR won't fix all of the problems here so it doesn't fix this bug (it doesn't properly inform rustdoc to skip should_panic tests) so it should not close this issue. |
kennytm commentedNov 11, 2018
•
edited by alexcrichton
Symptom: The
arm-androidtest failed with the following messages:Previous instances:
This might be caused by a mis-optimization like #49775.