Skip to content

Commit d798b81

Browse files
fix: remove EnableLLVM to fix plt_entry AOT crash on Android startup
EnableLLVM=true causes the LLVM AOT backend to generate internally-inconsistent PLT (Procedure Linkage Table) entries when combined with AndroidEnableProfiledAot (partial method compilation). This produces 'plt_entry not met' assertions in aot-runtime.c:5341 causing SIGABRT on SDLThread within 2 seconds of startup. The default Mono AOT compiler handles partial-image PLT generation correctly and is used instead. Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/951d1b55-ea75-43fb-a97c-30faafa4a2f1 Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
1 parent 5e38da1 commit d798b81

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

osu.Android.props

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@
4747
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
4848
<RunAOTCompilation>true</RunAOTCompilation>
4949
<AndroidEnableProfiledAot>true</AndroidEnableProfiledAot>
50-
<!-- Use LLVM backend for AOT — produces higher-quality native code than the default
51-
Mono AOT compiler. Critical for a rhythm game where frame-level timing matters. -->
52-
<EnableLLVM>true</EnableLLVM>
50+
<!-- Do NOT use EnableLLVM with profiled AOT on .NET 10.
51+
The LLVM backend generates internally-inconsistent PLT (Procedure Linkage Table)
52+
entries when only a subset of methods is AOT-compiled (profiled AOT). This causes
53+
'plt_entry not met' assertions in aot-runtime.c at startup (SIGABRT on SDLThread).
54+
The default Mono AOT compiler handles partial-image PLT generation correctly. -->
5355
<SuppressTrimAnalysisWarnings>true</SuppressTrimAnalysisWarnings>
5456
<PublishTrimmed>true</PublishTrimmed>
5557
<TrimMode>partial</TrimMode>

0 commit comments

Comments
 (0)