xamarin / xamarin-macios

.NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C#
Other
2.44k stars 508 forks source link

[iOS] Net 9 Preview 7, iOS app in Release will crash when UseInterpreter is set to true #21061

Open rolfbjarne opened 3 weeks ago

rolfbjarne commented 3 weeks ago

From @DominicGenetec on Thu, 15 Aug 2024 12:37:19 GMT

Describe the bug

Net 9 Preview 7, On iOS trying to use in release on a real ios device will prevent the app from launching.

To Reproduce

I'm running everything on a M1 mac. Install net 9 preview 7 Create an iOS sample using the maui template. (or use the one i've included, see below) Connect a real phone (not a simulator) Compile in release and make sure the app is working.

Add this line in the csproj

    <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
          <UseInterpreter>true</UseInterpreter>
    </PropertyGroup>

Notice the app will crash on launch.

Exceptions (if any)

There are no crash log available in the mac Console, the app start and immediately exit.

Further technical details

It work fine on Net 8. In dot net 9 preview 5, launching in debug on a iphone would also crash the application, but that seems to be fixed in preview 7.

I've made a sample app with the UseInterpreter already added. Open the MauiApp1.sln and launch it in release on a real iOS device. MauiApp1.zip

Copied from original issue dotnet/sdk#42752

rolfbjarne commented 3 weeks ago

From @baronfel on Thu, 15 Aug 2024 13:27:46 GMT

Cc @dotnet/macios

rolfbjarne commented 3 weeks ago

I can reproduce a crash with something like this:

cd MauiApp1/MauiApp1/MauiApp1.iOS
git clean -xfd
dotnet build /p:RuntimeIdentifier=ios-arm64 /p:Configuration=Release
touch *.csproj
dotnet build /p:RuntimeIdentifier=ios-arm64 /p:Configuration=Release /p:UseInterpreter=true
# launch

This means that cleaning the project after changing the UseInterpreter condition is a workaround.