A net10.0-macos app crashes on launch when submitted to the Mac App Store. The crash occurs in xamarin_vm_initialize before any user code runs. The same app previously shipped successfully as net8.0-macos without any special configuration.
Crash stack (identical across two separate review submissions):
abort()
← xamarin_assertion_message [imageOffset: 50940]
← xamarin_vm_initialize [imageOffset: 60720]
← xamarin_main [imageOffset: 90848]
← main [imageOffset: 94708]
Exception: EXC_CRASH (SIGABRT) / abort() called
Platform: macOS 26.3 (ARM64, Mac16,8)
Build version: confirmed across build 12 and build 13 — identical offsets, different UUIDs
What I've tried:
Added <UseInterpreter>true</UseInterpreter> to the Release PropertyGroup — build succeeds, crash is identical, same offsets. Confirms UseInterpreter is silently ignored for net10.0-macos.
Added <PublishAot>true</PublishAot> — probably resolves the crash but breaks reflection-based SQLite (sqlite-net-pcl) and JSON (Newtonsoft.Json) at runtime. Not viable without significant AOT annotation work.
Attempted downgrade to net8.0-macos — blocked by NETSDK1202 (net8 workload EOL) when building with .NET SDK 10.0.201.
Project configuration:
<TargetFramework>net10.0-macos</TargetFramework>
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
Entitlements (Release):
<key>com.apple.security.app-sandbox</key><true/>
<key>com.apple.security.network.client</key><true/>
<key>com.apple.security.files.user-selected.read-write</key><true/>
No JIT-related entitlements present or permitted for App Store distribution.
Expected behaviour
App launches successfully in the Mac App Store sandbox, consistent with net8.0-macos behaviour.
Actual behaviour
xamarin_vm_initialize calls xamarin_assertion_message then abort(). App never reaches user code.
Crashlog-0330-125502.log
Crashlog-0403-143758.log
Questions for the team:
- Is UseInterpreter intentionally unsupported for net10.0-macos? If so, what is the supported mechanism for avoiding JIT in the App Store sandbox?
- Is there a known regression between net8.0-macos and net10.0-macos in how the Mono VM initialises under the hardened runtime + App Sandbox?
- Is PublishAot the only supported path for Mac App Store distribution with net10.0-macos, and if so, is there guidance on making reflection-dependent NuGet packages AOT-compatible?
A net10.0-macos app crashes on launch when submitted to the Mac App Store. The crash occurs in xamarin_vm_initialize before any user code runs. The same app previously shipped successfully as net8.0-macos without any special configuration.
Crash stack (identical across two separate review submissions):
abort()
← xamarin_assertion_message [imageOffset: 50940]
← xamarin_vm_initialize [imageOffset: 60720]
← xamarin_main [imageOffset: 90848]
← main [imageOffset: 94708]
Exception: EXC_CRASH (SIGABRT) / abort() called
Platform: macOS 26.3 (ARM64, Mac16,8)
Build version: confirmed across build 12 and build 13 — identical offsets, different UUIDs
What I've tried:
Added
<UseInterpreter>true</UseInterpreter>to the Release PropertyGroup — build succeeds, crash is identical, same offsets. Confirms UseInterpreter is silently ignored for net10.0-macos.Added
<PublishAot>true</PublishAot>— probably resolves the crash but breaks reflection-based SQLite (sqlite-net-pcl) and JSON (Newtonsoft.Json) at runtime. Not viable without significant AOT annotation work.Attempted downgrade to net8.0-macos — blocked by NETSDK1202 (net8 workload EOL) when building with .NET SDK 10.0.201.
Project configuration:
Entitlements (Release):
No JIT-related entitlements present or permitted for App Store distribution.
Expected behaviour
App launches successfully in the Mac App Store sandbox, consistent with net8.0-macos behaviour.
Actual behaviour
xamarin_vm_initialize calls xamarin_assertion_message then abort(). App never reaches user code.
Crashlog-0330-125502.log
Crashlog-0403-143758.log
Questions for the team: