Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

aarch64-darwin: crash when unwinding #3256

Closed
bnjbvr opened this issue Aug 27, 2021 · 3 comments · Fixed by #3274
Closed

aarch64-darwin: crash when unwinding #3256

bnjbvr opened this issue Aug 27, 2021 · 3 comments · Fixed by #3274
Labels
bug Incorrect behavior in the current implementation that needs fixing

Comments

@bnjbvr
Copy link
Member

bnjbvr commented Aug 27, 2021

Our internal wasmtime testing on aarch64-darwin shows that something broke around July 17th: https://buildkite.com/embark-studios/wasmtime-aarch64-apple-darwin/builds?branch=main&page=5

When running cargo test -p wasmtime-cli --test all, I see a segfault. LLDB shows libunwind in the backtrace, then the backtrace crate, then wasmtime::trap::Trap::new as the first wasmtime function. It seems that it happens when we're creating to create a backtrace after resuming a fiber from another thread.

Unfortunately, I've been trying to chase down a commit that would have introduced this failure, with no success: I can get back to wasmtime as of June 1st (last time I remember manually running tests on this machine), and reproduce that crash. So it could be that the system, distributed version of libunwind has changed after an upgrade of MacOS, and that it is now not working with our unwinding methods anymore.

I'll try to investigate a bit more, and report about what I've found, and if there are workarounds.

@bnjbvr bnjbvr added the bug Incorrect behavior in the current implementation that needs fixing label Aug 27, 2021
@alexcrichton
Copy link
Member

Digging through those logs it looks like when wasmtime is checked out it doesn't print the revision (would y'all be up for changing it to print this?) but assuming that the dates roughly line up with GitHub's dates I'm seeing I think the range for the regression is probably somewhere in here --

73fd702...f628d06

All of that looks pretty benign though. #3082 and #3074 are arm64 specific but unrelated to unwinding. #3088 is related to async and stack checks but which also makes it suspicious, but I also have a hard time seeing how that would cause something like this...

@bnjbvr
Copy link
Member Author

bnjbvr commented Aug 30, 2021

would y'all be up for changing it to print this?

Good idea, added this 👍

All of that looks pretty benign though.

Yeah, I've tried to git bisect but even the oldest commit I've tried, one I wrote and which I tested manually at the time (and for which I could remember that all the tests were passing), even that commit was failing. Hence my suspicion of a system-wide change. Will try to investigate a bit more this week.

@bnjbvr bnjbvr changed the title aarch64-macos: crash when unwinding aarch64-darwin: crash when unwinding Sep 1, 2021
@bnjbvr
Copy link
Member Author

bnjbvr commented Sep 1, 2021

One test that triggers a crash 100% of the time is async_functions::iloop_with_fuel. I managed to retrieve the latest version of libunwind present on https://opensource.apple.com/, build it locally and link it statically in wasmtime + backtrace.rs. Luckily, with this I can reproduce the crash with something that looks like the same crash backtrace (so it might be the same crash!). Debug symbols for the debug build of libunwind don't appear in lldb, yet I thought they would appear (everything has been built in debug mode).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Incorrect behavior in the current implementation that needs fixing
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants