Skip to content

Commit afb5f7e

Browse files
authored
[Xamarin.Android.Build.Tasks] Disable LLVM marshal methods (#9336)
Context: #8253 Context: #9343 We've had a number of reports about *hangs* when LLVM Marshal Methods are enabled (see also #8253), but we had been willing to accept having LLVM Marshal Methods enabled by default as it helps improve app startup time. However, [a customer reported a native crash][0] when LLVM Marshal Methods are enabled: > ![Thread Stack Trace][1] syscall at line 28 within libc __futex_wait_ex(void volatile*, bool, int, bool, timespec const*) at line 144 within libc sem_wait at line 108 within libc within libmonosgen-2.0.so (Build Id: …) within <anonymous:…> This native crash suggests "something going wrong" within MonoVM. We find this "scary" enough that we feel it is once again prudent to disable LLVM Marshal Methods by default in .NET 9, by setting the default value of `$(AndroidEnableMarshalMethods)`=False. Even though #9343 has a potential fix for the hang, we feel that we're too close to .NET 9 GA to validate in the wild. This feature will need to wait for .NET 10. 🙁 To explicitly enable LLVM Marshal Methods, set `$(AndroidEnableMarshalMethods)`=True in your App `.csproj`. [0]: https://discord.com/channels/732297728826277939/732297837953679412/1288758900627345463 [1]: https://cdn.discordapp.com/attachments/732297837953679412/1288758900522483712/05F6ED48-2BBA-4FC0-A54F-81BB57606500.png?ex=66f659c1&is=66f50841&hm=8f6f78f283f8c03e9fb37a452ad5d0babaaad3dd4bcc1b4887f4dcf60f651c12&
1 parent dca673c commit afb5f7e

File tree

3 files changed

+53
-50
lines changed

3 files changed

+53
-50
lines changed

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
"Size": 3036
66
},
77
"classes.dex": {
8-
"Size": 22488
8+
"Size": 389672
99
},
1010
"lib/arm64-v8a/lib__Microsoft.Android.Resource.Designer.dll.so": {
1111
"Size": 18208
1212
},
1313
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
14-
"Size": 86368
14+
"Size": 86256
1515
},
1616
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
17-
"Size": 115752
17+
"Size": 115344
1818
},
1919
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
20-
"Size": 22408
20+
"Size": 22400
2121
},
2222
"lib/arm64-v8a/lib_System.Console.dll.so": {
2323
"Size": 24384
@@ -26,7 +26,7 @@
2626
"Size": 26480
2727
},
2828
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
29-
"Size": 633792
29+
"Size": 633920
3030
},
3131
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
3232
"Size": 20048
@@ -44,7 +44,7 @@
4444
"Size": 87432
4545
},
4646
"lib/arm64-v8a/libmonodroid.so": {
47-
"Size": 485800
47+
"Size": 485400
4848
},
4949
"lib/arm64-v8a/libmonosgen-2.0.so": {
5050
"Size": 3196336
@@ -62,10 +62,10 @@
6262
"Size": 160232
6363
},
6464
"lib/arm64-v8a/libxamarin-app.so": {
65-
"Size": 17912
65+
"Size": 12648
6666
},
6767
"META-INF/BNDLTOOL.RSA": {
68-
"Size": 1221
68+
"Size": 1223
6969
},
7070
"META-INF/BNDLTOOL.SF": {
7171
"Size": 3266
@@ -98,5 +98,5 @@
9898
"Size": 1904
9999
}
100100
},
101-
"PackageSize": 2791957
101+
"PackageSize": 2865685
102102
}

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
"Size": 6652
66
},
77
"classes.dex": {
8-
"Size": 9172800
8+
"Size": 9448924
9+
},
10+
"classes2.dex": {
11+
"Size": 154180
912
},
1013
"kotlin/annotation/annotation.kotlin_builtins": {
1114
"Size": 928
@@ -32,25 +35,25 @@
3235
"Size": 19456
3336
},
3437
"lib/arm64-v8a/lib_FormsViewGroup.dll.so": {
35-
"Size": 25424
38+
"Size": 25184
3639
},
3740
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
38-
"Size": 94768
41+
"Size": 94640
3942
},
4043
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
41-
"Size": 523568
44+
"Size": 521824
4245
},
4346
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
44-
"Size": 22408
47+
"Size": 22400
4548
},
4649
"lib/arm64-v8a/lib_mscorlib.dll.so": {
47-
"Size": 21432
50+
"Size": 21440
4851
},
4952
"lib/arm64-v8a/lib_netstandard.dll.so": {
5053
"Size": 23080
5154
},
5255
"lib/arm64-v8a/lib_System.Collections.Concurrent.dll.so": {
53-
"Size": 29808
56+
"Size": 29800
5457
},
5558
"lib/arm64-v8a/lib_System.Collections.dll.so": {
5659
"Size": 36288
@@ -65,13 +68,13 @@
6568
"Size": 19584
6669
},
6770
"lib/arm64-v8a/lib_System.ComponentModel.Primitives.dll.so": {
68-
"Size": 21304
71+
"Size": 21296
6972
},
7073
"lib/arm64-v8a/lib_System.ComponentModel.TypeConverter.dll.so": {
71-
"Size": 42456
74+
"Size": 42448
7275
},
7376
"lib/arm64-v8a/lib_System.Console.dll.so": {
74-
"Size": 24424
77+
"Size": 24416
7578
},
7679
"lib/arm64-v8a/lib_System.Core.dll.so": {
7780
"Size": 19456
@@ -80,7 +83,7 @@
8083
"Size": 28440
8184
},
8285
"lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": {
83-
"Size": 24696
86+
"Size": 24688
8487
},
8588
"lib/arm64-v8a/lib_System.dll.so": {
8689
"Size": 19856
@@ -95,7 +98,7 @@
9598
"Size": 49936
9699
},
97100
"lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": {
98-
"Size": 29488
101+
"Size": 29480
99102
},
100103
"lib/arm64-v8a/lib_System.IO.Compression.dll.so": {
101104
"Size": 33784
@@ -107,13 +110,13 @@
107110
"Size": 38736
108111
},
109112
"lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": {
110-
"Size": 185816
113+
"Size": 185808
111114
},
112115
"lib/arm64-v8a/lib_System.Net.Http.dll.so": {
113-
"Size": 89488
116+
"Size": 89496
114117
},
115118
"lib/arm64-v8a/lib_System.Net.Primitives.dll.so": {
116-
"Size": 41112
119+
"Size": 41120
117120
},
118121
"lib/arm64-v8a/lib_System.Net.Requests.dll.so": {
119122
"Size": 21552
@@ -122,19 +125,19 @@
122125
"Size": 27072
123126
},
124127
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
125-
"Size": 956368
128+
"Size": 956408
126129
},
127130
"lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": {
128131
"Size": 216688
129132
},
130133
"lib/arm64-v8a/lib_System.Private.Uri.dll.so": {
131-
"Size": 62184
134+
"Size": 62192
132135
},
133136
"lib/arm64-v8a/lib_System.Private.Xml.dll.so": {
134-
"Size": 237096
137+
"Size": 237104
135138
},
136139
"lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": {
137-
"Size": 35592
140+
"Size": 35584
138141
},
139142
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
140143
"Size": 20200
@@ -143,22 +146,22 @@
143146
"Size": 21592
144147
},
145148
"lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": {
146-
"Size": 54400
149+
"Size": 54408
147150
},
148151
"lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": {
149-
"Size": 19360
152+
"Size": 19352
150153
},
151154
"lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": {
152155
"Size": 20336
153156
},
154157
"lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": {
155-
"Size": 21456
158+
"Size": 21448
156159
},
157160
"lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": {
158-
"Size": 80496
161+
"Size": 80504
159162
},
160163
"lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": {
161-
"Size": 183600
164+
"Size": 183592
162165
},
163166
"lib/arm64-v8a/lib_System.Xml.dll.so": {
164167
"Size": 19256
@@ -170,31 +173,31 @@
170173
"Size": 22096
171174
},
172175
"lib/arm64-v8a/lib_Xamarin.AndroidX.Activity.dll.so": {
173-
"Size": 34960
176+
"Size": 34760
174177
},
175178
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.AppCompatResources.dll.so": {
176-
"Size": 24520
179+
"Size": 24296
177180
},
178181
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.dll.so": {
179-
"Size": 163240
182+
"Size": 163072
180183
},
181184
"lib/arm64-v8a/lib_Xamarin.AndroidX.CardView.dll.so": {
182185
"Size": 24560
183186
},
184187
"lib/arm64-v8a/lib_Xamarin.AndroidX.CoordinatorLayout.dll.so": {
185-
"Size": 35912
188+
"Size": 35680
186189
},
187190
"lib/arm64-v8a/lib_Xamarin.AndroidX.Core.dll.so": {
188-
"Size": 151408
191+
"Size": 151216
189192
},
190193
"lib/arm64-v8a/lib_Xamarin.AndroidX.CursorAdapter.dll.so": {
191194
"Size": 27168
192195
},
193196
"lib/arm64-v8a/lib_Xamarin.AndroidX.DrawerLayout.dll.so": {
194-
"Size": 33944
197+
"Size": 33760
195198
},
196199
"lib/arm64-v8a/lib_Xamarin.AndroidX.Fragment.dll.so": {
197-
"Size": 72528
200+
"Size": 72224
198201
},
199202
"lib/arm64-v8a/lib_Xamarin.AndroidX.Legacy.Support.Core.UI.dll.so": {
200203
"Size": 23896
@@ -212,16 +215,16 @@
212215
"Size": 31592
213216
},
214217
"lib/arm64-v8a/lib_Xamarin.AndroidX.RecyclerView.dll.so": {
215-
"Size": 112256
218+
"Size": 111896
216219
},
217220
"lib/arm64-v8a/lib_Xamarin.AndroidX.SavedState.dll.so": {
218221
"Size": 23144
219222
},
220223
"lib/arm64-v8a/lib_Xamarin.AndroidX.SwipeRefreshLayout.dll.so": {
221-
"Size": 31952
224+
"Size": 31672
222225
},
223226
"lib/arm64-v8a/lib_Xamarin.AndroidX.ViewPager.dll.so": {
224-
"Size": 38056
227+
"Size": 37752
225228
},
226229
"lib/arm64-v8a/lib_Xamarin.Forms.Core.dll.so": {
227230
"Size": 581000
@@ -236,7 +239,7 @@
236239
"Size": 80632
237240
},
238241
"lib/arm64-v8a/lib_Xamarin.Google.Android.Material.dll.so": {
239-
"Size": 84768
242+
"Size": 84400
240243
},
241244
"lib/arm64-v8a/libarc.bin.so": {
242245
"Size": 18776
@@ -245,7 +248,7 @@
245248
"Size": 87432
246249
},
247250
"lib/arm64-v8a/libmonodroid.so": {
248-
"Size": 485800
251+
"Size": 485400
249252
},
250253
"lib/arm64-v8a/libmonosgen-2.0.so": {
251254
"Size": 3196336
@@ -263,7 +266,7 @@
263266
"Size": 160232
264267
},
265268
"lib/arm64-v8a/libxamarin-app.so": {
266-
"Size": 349352
269+
"Size": 119928
267270
},
268271
"META-INF/androidx.activity_activity.version": {
269272
"Size": 6
@@ -419,7 +422,7 @@
419422
"Size": 1221
420423
},
421424
"META-INF/BNDLTOOL.SF": {
422-
"Size": 98577
425+
"Size": 98661
423426
},
424427
"META-INF/com.android.tools/proguard/coroutines.pro": {
425428
"Size": 1345
@@ -446,7 +449,7 @@
446449
"Size": 5
447450
},
448451
"META-INF/MANIFEST.MF": {
449-
"Size": 98450
452+
"Size": 98534
450453
},
451454
"META-INF/maven/com.google.guava/listenablefuture/pom.properties": {
452455
"Size": 96
@@ -2486,5 +2489,5 @@
24862489
"Size": 812848
24872490
}
24882491
},
2489-
"PackageSize": 10628363
2492+
"PackageSize": 10673477
24902493
}

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
320320
<AndroidUseAssemblyStore Condition=" '$(AndroidUseAssemblyStore)' == '' ">true</AndroidUseAssemblyStore>
321321
<AndroidAotEnableLazyLoad Condition=" '$(AndroidAotEnableLazyLoad)' == '' And '$(AotAssemblies)' == 'true' And '$(AndroidIncludeDebugSymbols)' != 'true' ">True</AndroidAotEnableLazyLoad>
322322
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' and ('$(UsingMicrosoftNETSdkRazor)' == 'true') ">False</AndroidEnableMarshalMethods>
323-
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' ">True</AndroidEnableMarshalMethods>
323+
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' ">False</AndroidEnableMarshalMethods>
324324
<_AndroidUseMarshalMethods Condition=" '$(AndroidIncludeDebugSymbols)' == 'True' ">False</_AndroidUseMarshalMethods>
325325
<_AndroidUseMarshalMethods Condition=" '$(AndroidIncludeDebugSymbols)' != 'True' ">$(AndroidEnableMarshalMethods)</_AndroidUseMarshalMethods>
326326
</PropertyGroup>

0 commit comments

Comments
 (0)