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
watchOS extensions crash at launch with 'Failed to load AOT module 'mscorlib' while running in aot-only mode: not compiled with safepoints.' #11765
Steps to Reproduce
Crashes at launch with:
This usually happens when the cross compiler is not configured using the
The crosscompiler template also picks up the flags from the device runtime, that is: ``` ios-targetwatch_CONFIGURE_FLAGS = [...] ``` will be passed to the crosscompiler runtime as well. Therefore we had something like this: ```console ./configure [...] --disable-cooperative-suspend --disable-hybrid-suspend --disable-crash-reporting --enable-cooperative-suspend [...] ``` with this PR it looks like this: ```console ./configure [...] --disable-crash-reporting --enable-cooperative-suspend [...] ``` Should fix: mono#11765
Trying some things out locally, but I think this is because VSMac sets
@rolfbjarne does building from the terminal create something usable?
long term - the AOT compiler has host/target confusion about safepoints, I think. But in the short term, maybe XI could override
@rolfbjarne Here's a gross hack. I'm not sure how to only do this for watchOS.
I'm going to work on a
* Bump to mono:2018-06 * Bump mono * Updates compression to work with the public span * Bump mono * Fixes pointer check logic in Deflater * Bump mono * Fixes pointer check logic in Deflater * Bump mono * Bump Mono * [runtime] always use `mono_jit_set_aot_mode` (#4491) `mono_jit_set_aot_only` is deprecated and accidentally broke with mono/mono#7887 This should fix device tests with `mono-2018-06` * Testing with Zoltan's patch * Include libmono-system-native on Xamarin.Mac * Bump Mono Commit list for mono/mono: * mono/mono@7bcda19 Bump llvm to release_60/fc854b8ec5873d294b80afa3e6cf6a88c5c48886. (#9786). (#9804) * mono/mono@23e95ec Apply F# portable pdb debug fix for pinvokes & bump (#9797) * mono/mono@295f6d3 [2018-06] [MacOS] On Mac, use the copyfile API to copy files (#9696) Diff: mono/mono@7d5f4b6...7bcda19 * Revert 4bacab3, it doesn't fix the ios aot problems. * Bump mono * [tests] Adjust the MT0137 test for mcs change in behavior. Starting with mono 5.16 mcs will now add assembly references when the assembly is only used in attributes (this was already the case for csc in both 5.14 and 5.16, so it seems to be a compatibility change). Adjust the MT0137 test accordingly. * [msbuild] Fix parsing of json parser errors to handle trailing periods in the error message. Fixes this test: 1) Test Failure : Xamarin.iOS.Tasks.Bug60536.TestACToolTaskCatchesJsonException ColumnNumber Expected: 2 But was: 0 * Bump mono * [builds] Install the old llvm binaries into the LLVM36 directory and make the 32 bit builds use that. * Bump mono * Bump to mono:2018-08 * Initialize Dependency Injector. * Fix typo * Fix llvm build * Reflect latest X509CertificateImpl changes * Use same compile flags also for link Linking can fail if the minimum versions are different * Bump mono * Bump mono * Assembly.LoadFile accepts only absolute path * Bump mono * [jenkins] Don't give VSTS a fake branch. (#4667) Something in VSTS changed, and now fake branch names don't work anymore. So instead use real branch names (and for pull requests I've created a 'pull-request' branch we can use). * Assembly.LoadFile accepts only absolute path * [linker] Add new Facade (System.Threading.Tasks.Extensions). Fixes these MTouch test failures: 1. Xamarin.Linker.SdkTest.iOS_Unified : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > 2. Xamarin.Linker.SdkTest.tvOS : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > 3. Xamarin.Linker.SdkTest.watchOS : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > * [linker] Add new Facade (System.Threading.Tasks.Extensions). Fixes these MTouch test failures: 1. Xamarin.Linker.SdkTest.iOS_Unified : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > 2. Xamarin.Linker.SdkTest.tvOS : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > 3. Xamarin.Linker.SdkTest.watchOS : Facades Expected: But was: < "System.Threading.Tasks.Extensions" > * [tests] Reference GuiUnit_Net_4_5 using a project reference. This makes sure GuiUnit is built when the main project is built. * [mono-sdks] Necessary changes to unify the LLVM provisioning for both iOS and Android. (#4732) * Bump Mono * [mtouch] add mixed-mode support (#4751) * [mtouch] add --interp-mixed option When enabling this option, mtouch will AOT compile `mscorlib.dll`. At runtime that means every method that wasn't AOT'd will be executed by the runtime interpreter. * [mtouch] Add support to --interpreter to list the assemblies to (not) interpret. * [msbuild] Simplify interpreter code to use a single variable. * Fix whitespace. * [mtouch] Move mtouch-specific code to mtouch-specific file. * [msbuild] An empty string is a valid value for 'Interpreter', so make it a non-required property. * [mtouch] Add sanity check for aot-compiling interpreted assemblies. * Bump Mono * [linker] Updates SDKs facades list * Bump mono * [msbuild] Adds facades which might override default nuget version to framework list The collision resolver task reads them from here https://github.com/dotnet/sdk/blob/master/src/Tasks/Common/ConflictResolution/FrameworkListReader.cs * Bump mono to pick up hybrid suspend fixes Pick up the 2018-08 backport (mono/mono#10551) of mono/mono#10545 This should fix GC hangs when managed code runs on a GCD threadpool worker thread. * [builds] Fix target name in llvm36 provisioning package-llvm-llvm36-32 isn't defined in external/mono/sdks/builds/llvm.mk, but package-llvm36-llvm32 is. * Revert "[builds] Fix target name in llvm36 provisioning" This reverts commit b233837. * Revert "Fix llvm build" This reverts commit f668561. * [mono-sdks] Necessary changes to unify the LLVM provisioning for both iOS and Android. (#4732) * Bump mono * Bump mono * Revert "Use same compile flags also for link" This reverts commit cf20539. * Bump mono to pick up mono/mono@1a309a7 * [mmptest] System.Core doesn't depend on Mono.Posix in 2018-08 System.Core doesn't depend on Mono.Posix anymore since it's using the corefx implementation of pipes now mono/mono@0f0e318 * Bump mono and minimum system mono * [security]: Make `SecCertificate` work with the latest runtime code. * Fix the `NATIVE_APPLE_CERTIFICATE` logic; it should only be defined when using `XAMARIN_APPLETLS` and not on watch. * It is no longer allowed to construct `X509Certificate` from a native pointer, the `X509Certificate(IntPtr)` and `X509Certificate2(IntPtr)` constructors now throw an exception. Use `X509CertificateImplAppl` directly instead. * Bump mono * Bump VSmac min version to 22.214.171.1243 To pick up the fix for https://devdiv.visualstudio.com/DevDiv/_workitems/edit/658916/ Should fix the XM classic build failures * Revert "Bump VSmac min version to 126.96.36.1993" This reverts commit b2686bb. * Bump to a VSfM version that can build XM Classic projects. * Bump mono system dependency * Bump mono Pick up mono/mono@1644a1a - fix for mono/mono#10743 * Bump mono * Bump mono * [monotouch-test] Disable X509Certificate(byte) tests on watchOS (#4942) * [monotouch-test] Disable X509Certificate(byte) tests on watchOS * [tests] Add TestRuntime.AssertNotWatchOS() * fixup WatchOS build * Bump mono * Bump mono * [tests] Disable link-preserve-calendar-1 until we can upgrade it to be a Unified test. See #4596 (comment) for reference: mono's desktop API changed, the linker behavior the test is verifying is only expected when using XM's Mobile profile. * Bump mono * Revert "[monotouch-test] Disable X509Certificate(byte) tests on watchOS (#4942)" This reverts commit d003a9b. * Bump Mono. * [security]: `NATIVE_APPLE_CERTIFICATE` should now be defined on watchOS as well. * Mono 2018-08 requires macOS 10.9+, so Xamarin.Mac must as well. * Bump min mono version for XM system apps. Using a system mono < 5.18 results in a TypeLoadException: Could not resolve type with token 01000032 from typeref (expected class 'Mono.ISystemDependencyProvider' in assembly 'mscorlib, Version=188.8.131.52, Culture=neutral, PublicKeyToken=b77a5c561934e089') * Bump guiunit to get updated min macOS version. Commit list for mono/guiunit: * mono/guiunit@9f67042 Bump min macOS version to 10.9. * mono/guiunit@0c3159a [Harness] Fix exit code of 0 being reported in case of exceptions in the harness * mono/guiunit@9b7497c Merge pull request #15 from mono/fix-more-warnings * mono/guiunit@a264470 Fix more warnings * mono/guiunit@dd094e7 Merge pull request #14 from mono/fix-warnings * mono/guiunit@b3afede Fix build warnings Diff: mono/guiunit@1306b0d...9f67042 * [tests] More min macOS version setting to 10.9. * Remove 10.7 & 10.8 availability attributes, since they're redundant now. * Bump mono * [2018-08][watchos] Use mono_dangerous_add_raw_internal_call for watchOS icalls (#5030) * Add optional mono_dangerous_add_raw_internal_call to exports.t4 * Use mono_dangerous_add_raw_internal_call on watchOS for icall registration Internal calls added with mono_dangerous_add_raw_internal_call run in GC Unsafe mode under cooperative and hybrid suspend, whereas internal calls added with mono_add_internal_call run in GC Safe mode since mono/mono@5756ba4 in order for hybrid suspend to be a transparent replacement for preemptive suspend (the old default). The icalls in GC Unsafe mode have a responsibility not to block indefinitely without manually performing a thread state transition to GC Safe mode, and in return they avoid a thread state transition when the icall is invoked from a managed method. * [mmptest] Less hardcoding. * Bump minimum mono one that has 'mono_dangerous_add_raw_internal_call'. * Bump mono * Bump system mono dependency * Fixes building mono tests * [ImageCaptureCore] Remove redundant availability attribute. * [mtouch] Clear the MONO_THREADS_SUSPEND environment variable before calling the AOT compiler. Works around mono/mono#11765. Visual Studio for Mac may set MONO_THREADS_SUSPEND, and this ends up confusing the AOT compiler when compiling for watchOS. So unset the environment variable before calling the AOT compiler. Works around mono/mono#11765.