Skip to content

Fix AOT crash (plt_entry assertion) and suppress release workflow warnings - #202

Merged
winnerspiros merged 1 commit into
masterfrom
copilot/fix-warnings-and-crash-logs
Apr 19, 2026
Merged

Fix AOT crash (plt_entry assertion) and suppress release workflow warnings#202
winnerspiros merged 1 commit into
masterfrom
copilot/fix-warnings-and-crash-logs

Conversation

Copilot AI commented Apr 19, 2026

Copy link
Copy Markdown

Release workflow run #24616392583 succeeded but produced many warnings, and the resulting APK crashes on launch with:

Assertion at aot-runtime.c:5341, condition `plt_entry' not met

SIGABRT on .NET Timer thread ~2s after start. Root cause: AndroidStripILAfterAOT=true + AndroidEnableProfiledAot=true — profiled AOT only compiles startup-profile methods, but IL stripping removes the fallback for everything else.

Crash fix

  • AndroidStripILAfterAOT=false in osu.Android.props — keeps IL bodies so un-AOT'd methods can be JIT'd/interpreted at runtime

Warning suppressions

  • NU1608 — Xamarin.AndroidX.Lifecycle 2.10.x resolving outside 2.9.x constraints; backward-compatible, harmless
  • XA4301 — duplicate .so files from multiple sources (AndroidNativeLibrary + runtime pack); build deduplicates correctly
  • CS1591 — Veldrid submodule emits missing-XML-doc warnings in Release (only suppressed in Debug). Fixed via build/SuppressSubmoduleWarnings.targets imported through CustomBeforeMicrosoftCommonTargets in release.yml, since Veldrid's own Directory.Build.props blocks normal NoWarn inheritance and we can't modify the submodule remote

…NU1608/XA4301/CS1591 warnings

- AndroidStripILAfterAOT=false: profiled AOT only compiles startup-profile
  methods; stripping IL removes the fallback for un-AOT'd methods, causing
  'plt_entry not met' assertion crash on .NET Timer thread at startup.
- NU1608: Xamarin.AndroidX.Lifecycle version constraint mismatches are
  harmless (2.10.x is backward-compatible with 2.9.x APIs).
- XA4301: duplicate native .so files in APK packaging (build picks one copy).
- CS1591: Veldrid submodule missing XML doc comments in Release builds,
  suppressed via CustomBeforeMicrosoftCommonTargets in release workflow.

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f09e4655-1c16-4d83-9ea4-cb15e8a466b2

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
@gitar-bot

gitar-bot Bot commented Apr 19, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

@winnerspiros
winnerspiros marked this pull request as ready for review April 19, 2026 00:02
Copilot AI review requested due to automatic review settings April 19, 2026 00:02
@winnerspiros
winnerspiros merged commit 5e38da1 into master Apr 19, 2026
2 of 16 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes an Android startup crash caused by an incompatible Release AOT/IL-stripping configuration, and reduces noise in the release workflow by suppressing known benign warnings (including submodule XML-doc warnings).

Changes:

  • Disable AndroidStripILAfterAOT in Release to keep IL available for methods not covered by profiled AOT.
  • Expand Android build warning suppressions (NU1608, XA4301) in osu.Android.props.
  • Add a build targets file to suppress CS1591 for submodule projects and wire it into the release workflow via CustomBeforeMicrosoftCommonTargets.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
osu.Android.props Turns off IL stripping for profiled AOT Release builds; adds additional NoWarn entries.
build/SuppressSubmoduleWarnings.targets Introduces Release-workflow-imported targets to suppress CS1591 for submodule projects.
.github/workflows/release.yml Passes CustomBeforeMicrosoftCommonTargets to include the new suppression targets during Release publishing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

<!-- Suppress CS1591 (missing XML doc comments) for submodule projects that enable
documentation generation but don't suppress the warning in Release builds.
This file is imported via CustomBeforeMicrosoftCommonTargets in the release workflow. -->
<PropertyGroup Condition="$(MSBuildProjectFullPath.Contains('submodules'))">

Copilot AI Apr 19, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MSBuild Condition syntax here is invalid: $(MSBuildProjectFullPath.Contains('submodules')) is treated as a property reference and will expand to empty, which can make the Condition fail evaluation (or not match) and break/disable the suppression. Use a proper string-method condition expression instead (e.g., apply .Contains() on a quoted string containing $(MSBuildProjectFullPath)), so the NoWarn property group reliably applies only to submodule projects.

Suggested change
<PropertyGroup Condition="$(MSBuildProjectFullPath.Contains('submodules'))">
<PropertyGroup Condition="'$(MSBuildProjectFullPath)'.Contains('submodules')">

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants