Closed
Description
Investigating a spurious test failure I'm able to reproduce this locally on Linux with a script that looks like this:
use std::os::unix::prelude::*;
use std::process::Command;
fn main() {
let s = Command::new("cargo").arg("build").status().unwrap();
assert!(s.success());
let threads = (0..28)
.map(|_| {
std::thread::spawn(|| {
for _ in 0..1_000_000 {
let s = Command::new("./target/debug/wasmtime")
.arg("--disable-cache")
.arg("./tests/wasm/unreachable.wat")
.output()
.unwrap();
if s.status.signal().is_some() {
println!("{}", s.status);
println!("{:?}", s.status.signal());
println!("{:?}", s);
std::process::exit(1);
}
}
})
})
.collect::<Vec<_>>();
for t in threads {
t.join().unwrap()
}
}
I'm not really sure why concurrent execution of wasmtime is necessary, but I wasn't able to reproduce with only one wasmtime process at a time.
This almost instantly has one of the subprocesses segfault for me locally, and the core dump shows the stack trace looks like:
#0 _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:92
#1 0x00007f01cec4163e in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#2 0x00007f01cec41bd6 in _Unwind_Find_FDE () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#3 0x00007f01cec3e183 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#4 0x00007f01cec3f360 in ?? () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#5 0x00007f01cec40068 in _Unwind_Backtrace () from /lib/x86_64-linux-gnu/libgcc_s.so.1
#6 0x000056042eee2d7d in backtrace::backtrace::libunwind::trace (cb=...) at /home/alex/.cargo/registry/src/github.tiyicn.workers.dev-1ecc6299db9ec823/backtrace-0.3.44/src/backtrace/libunwind.rs:86
#7 backtrace::backtrace::trace_unsynchronized (cb=...) at /home/alex/.cargo/registry/src/github.tiyicn.workers.dev-1ecc6299db9ec823/backtrace-0.3.44/src/backtrace/mod.rs:66
#8 0x000056042eee2cfe in backtrace::backtrace::trace (cb=...) at /home/alex/.cargo/registry/src/github.tiyicn.workers.dev-1ecc6299db9ec823/backtrace-0.3.44/src/backtrace/mod.rs:53
#9 0x000056042eed573d in backtrace::capture::Backtrace::create (ip=94575967164064) at /home/alex/.cargo/registry/src/github.tiyicn.workers.dev-1ecc6299db9ec823/backtrace-0.3.44/src/capture.rs:164
#10 0x000056042eed56b4 in backtrace::capture::Backtrace::new_unresolved () at /home/alex/.cargo/registry/src/github.tiyicn.workers.dev-1ecc6299db9ec823/backtrace-0.3.44/src/capture.rs:158
#11 0x000056042eeceb08 in wasmtime_runtime::traphandlers::CallThreadState::handle_trap (self=0x7fff0284edd0, pc=0x7f01cf687005 "\017\v", reset_guard_page=false, call_handler=...) at crates/runtime/src/traphandlers.rs:343
#12 0x000056042eecef60 in wasmtime_runtime::traphandlers::HandleTrap::{{closure}} (info=...) at crates/runtime/src/traphandlers.rs:36
#13 0x0000000000000000 in ?? ()
cc @yurydelendik it looks like this is something related to FDE information perhaps?
Metadata
Metadata
Assignees
Labels
No labels