Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Steps to Reproduce
Crash at launch.
Application output isn't very helpful:
A lldb session doesn't help much either: https://gist.github.com/rolfbjarne/42efa81e405c86f6eafc278483dadec0.
On which platforms did you notice this
[x] watchOS (only armv7k, doesn't repro on arm64_32 with the new arm64_32 support).
xamarin-macios: master (xamarin/xamarin-macios@96ae30a)
@rolfbjarne provided some more logs.
Crash caught in the debugger: https://gist.github.com/rolfbjarne/e333fb4b7704c3c311a7cf7c631cd864
Rolf added some more logging around the crash site:
Here are the bitcode files in case someone wants to look at it:
I looked into all the logs, but I didn't discover anything suspicious
As a reference, here is the slack conversation with more context: https://xamarinhq.slack.com/archives/C03CCJNR7/p1552567685389000
@vargaz do you have any idea what that could be?
FWIW log output with
with some counting tricks, I got this back trace:
I need to dechiper the handles code, but wild guess: There was a big commit in the handles code after
@lewurm could be this call to
I notice that the
So if it's reasonable for GetConstructors_native to return null, the SafeGPtraArrayHandle should be fixed up, if not, we need to figure out why the constructors icall is returning null
"nice", I don't get that
lldb timeouts on the watch prevent me to single step through it
turns into that machine code
So this is the C# code for it:
@vargaz does that ring a bell?
diff --git a/mono/mini/mini-arm.c b/mono/mini/mini-arm.c index 82c05db8462..f4ebd7655c6 100644 --- a/mono/mini/mini-arm.c +++ b/mono/mini/mini-arm.c @@ -2375,7 +2375,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig) * passing structs with sizes up to 8 bytes in a single register. * On armv7k slotsize=8 boils down to the same generated native * code by LLVM, so it's okay. */ - slotsize = 8; + slotsize = 4; #else slotsize = eabi_supported && ainfo->align == 8 ? 8 : 4; #endif
this fixes it, but I've to think about a proper solution so it doesn't break release mode of
[2019-04] [arm] fix armv7k regression on struct passing We can't use `slotsize=8` on `armv7k` as it leads to stack corruption. Note that `mtouch` already calls the AOT compiler with `--aot=mtriple=arm64_32-ios`, so no changes are required there. Regression introduced by #12992 Fixes #13454 Backport of #14362. /cc @lewurm