Skip to content

Commit f6f94d0

Browse files
grendellojonathanpeppers
authored andcommitted
[Xamarin.Android.Build.Tasks] Disable LLVM marshal methods (dotnet#9336)
Context: dotnet#8253 Context: dotnet#9343 We've had a number of reports about *hangs* when LLVM Marshal Methods are enabled (see also dotnet#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 dotnet#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 1171f8d commit f6f94d0

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": 1114
1212
},
1313
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
14-
"Size": 69279
14+
"Size": 86256
1515
},
1616
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
17-
"Size": 98660
17+
"Size": 115344
1818
},
1919
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
20-
"Size": 5315
20+
"Size": 22400
2121
},
2222
"lib/arm64-v8a/lib_System.Console.dll.so": {
2323
"Size": 7294
@@ -26,7 +26,7 @@
2626
"Size": 9390
2727
},
2828
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
29-
"Size": 616700
29+
"Size": 633920
3030
},
3131
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
3232
"Size": 2956
@@ -44,7 +44,7 @@
4444
"Size": 87432
4545
},
4646
"lib/arm64-v8a/libmonodroid.so": {
47-
"Size": 484920
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": 2783765
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": 2363
3336
},
3437
"lib/arm64-v8a/lib_FormsViewGroup.dll.so": {
35-
"Size": 8330
38+
"Size": 25184
3639
},
3740
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
38-
"Size": 77673
41+
"Size": 94640
3942
},
4043
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
41-
"Size": 506473
44+
"Size": 521824
4245
},
4346
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
44-
"Size": 5315
47+
"Size": 22400
4548
},
4649
"lib/arm64-v8a/lib_mscorlib.dll.so": {
47-
"Size": 4344
50+
"Size": 21440
4851
},
4952
"lib/arm64-v8a/lib_netstandard.dll.so": {
5053
"Size": 5985
5154
},
5255
"lib/arm64-v8a/lib_System.Collections.Concurrent.dll.so": {
53-
"Size": 12714
56+
"Size": 29800
5457
},
5558
"lib/arm64-v8a/lib_System.Collections.dll.so": {
5659
"Size": 19198
@@ -65,13 +68,13 @@
6568
"Size": 2496
6669
},
6770
"lib/arm64-v8a/lib_System.ComponentModel.Primitives.dll.so": {
68-
"Size": 4212
71+
"Size": 21296
6972
},
7073
"lib/arm64-v8a/lib_System.ComponentModel.TypeConverter.dll.so": {
71-
"Size": 25362
74+
"Size": 42448
7275
},
7376
"lib/arm64-v8a/lib_System.Console.dll.so": {
74-
"Size": 7331
77+
"Size": 24416
7578
},
7679
"lib/arm64-v8a/lib_System.Core.dll.so": {
7780
"Size": 2365
@@ -80,7 +83,7 @@
8083
"Size": 11349
8184
},
8285
"lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": {
83-
"Size": 7601
86+
"Size": 24688
8487
},
8588
"lib/arm64-v8a/lib_System.dll.so": {
8689
"Size": 2765
@@ -95,7 +98,7 @@
9598
"Size": 32843
9699
},
97100
"lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": {
98-
"Size": 12393
101+
"Size": 29480
99102
},
100103
"lib/arm64-v8a/lib_System.IO.Compression.dll.so": {
101104
"Size": 16696
@@ -107,13 +110,13 @@
107110
"Size": 21645
108111
},
109112
"lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": {
110-
"Size": 168722
113+
"Size": 185808
111114
},
112115
"lib/arm64-v8a/lib_System.Net.Http.dll.so": {
113-
"Size": 72400
116+
"Size": 89496
114117
},
115118
"lib/arm64-v8a/lib_System.Net.Primitives.dll.so": {
116-
"Size": 24022
119+
"Size": 41120
117120
},
118121
"lib/arm64-v8a/lib_System.Net.Requests.dll.so": {
119122
"Size": 4461
@@ -122,19 +125,19 @@
122125
"Size": 9981
123126
},
124127
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
125-
"Size": 939274
128+
"Size": 956408
126129
},
127130
"lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": {
128131
"Size": 199596
129132
},
130133
"lib/arm64-v8a/lib_System.Private.Uri.dll.so": {
131-
"Size": 45095
134+
"Size": 62192
132135
},
133136
"lib/arm64-v8a/lib_System.Private.Xml.dll.so": {
134-
"Size": 220007
137+
"Size": 237104
135138
},
136139
"lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": {
137-
"Size": 18497
140+
"Size": 35584
138141
},
139142
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
140143
"Size": 3111
@@ -143,22 +146,22 @@
143146
"Size": 4502
144147
},
145148
"lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": {
146-
"Size": 37312
149+
"Size": 54408
147150
},
148151
"lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": {
149-
"Size": 2265
152+
"Size": 19352
150153
},
151154
"lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": {
152155
"Size": 3243
153156
},
154157
"lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": {
155-
"Size": 4361
158+
"Size": 21448
156159
},
157160
"lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": {
158-
"Size": 63408
161+
"Size": 80504
159162
},
160163
"lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": {
161-
"Size": 166506
164+
"Size": 183592
162165
},
163166
"lib/arm64-v8a/lib_System.Xml.dll.so": {
164167
"Size": 2167
@@ -170,31 +173,31 @@
170173
"Size": 5007
171174
},
172175
"lib/arm64-v8a/lib_Xamarin.AndroidX.Activity.dll.so": {
173-
"Size": 17872
176+
"Size": 34760
174177
},
175178
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.AppCompatResources.dll.so": {
176-
"Size": 7425
179+
"Size": 24296
177180
},
178181
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.dll.so": {
179-
"Size": 146152
182+
"Size": 163072
180183
},
181184
"lib/arm64-v8a/lib_Xamarin.AndroidX.CardView.dll.so": {
182185
"Size": 7469
183186
},
184187
"lib/arm64-v8a/lib_Xamarin.AndroidX.CoordinatorLayout.dll.so": {
185-
"Size": 18823
188+
"Size": 35680
186189
},
187190
"lib/arm64-v8a/lib_Xamarin.AndroidX.Core.dll.so": {
188-
"Size": 134318
191+
"Size": 151216
189192
},
190193
"lib/arm64-v8a/lib_Xamarin.AndroidX.CursorAdapter.dll.so": {
191194
"Size": 10076
192195
},
193196
"lib/arm64-v8a/lib_Xamarin.AndroidX.DrawerLayout.dll.so": {
194-
"Size": 16856
197+
"Size": 33760
195198
},
196199
"lib/arm64-v8a/lib_Xamarin.AndroidX.Fragment.dll.so": {
197-
"Size": 55435
200+
"Size": 72224
198201
},
199202
"lib/arm64-v8a/lib_Xamarin.AndroidX.Legacy.Support.Core.UI.dll.so": {
200203
"Size": 6806
@@ -212,16 +215,16 @@
212215
"Size": 14499
213216
},
214217
"lib/arm64-v8a/lib_Xamarin.AndroidX.RecyclerView.dll.so": {
215-
"Size": 95162
218+
"Size": 111896
216219
},
217220
"lib/arm64-v8a/lib_Xamarin.AndroidX.SavedState.dll.so": {
218221
"Size": 6050
219222
},
220223
"lib/arm64-v8a/lib_Xamarin.AndroidX.SwipeRefreshLayout.dll.so": {
221-
"Size": 14858
224+
"Size": 31672
222225
},
223226
"lib/arm64-v8a/lib_Xamarin.AndroidX.ViewPager.dll.so": {
224-
"Size": 20961
227+
"Size": 37752
225228
},
226229
"lib/arm64-v8a/lib_Xamarin.Forms.Core.dll.so": {
227230
"Size": 563905
@@ -236,7 +239,7 @@
236239
"Size": 63542
237240
},
238241
"lib/arm64-v8a/lib_Xamarin.Google.Android.Material.dll.so": {
239-
"Size": 67675
242+
"Size": 84400
240243
},
241244
"lib/arm64-v8a/libarc.bin.so": {
242245
"Size": 1685
@@ -245,7 +248,7 @@
245248
"Size": 87432
246249
},
247250
"lib/arm64-v8a/libmonodroid.so": {
248-
"Size": 484920
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": 1223
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": 10579211
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
@@ -324,7 +324,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
324324
<AndroidUseAssemblyStore Condition=" '$(AndroidUseAssemblyStore)' == '' ">true</AndroidUseAssemblyStore>
325325
<AndroidAotEnableLazyLoad Condition=" '$(AndroidAotEnableLazyLoad)' == '' And '$(AotAssemblies)' == 'true' And '$(AndroidIncludeDebugSymbols)' != 'true' ">True</AndroidAotEnableLazyLoad>
326326
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' and ('$(UsingMicrosoftNETSdkRazor)' == 'true') ">False</AndroidEnableMarshalMethods>
327-
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' ">True</AndroidEnableMarshalMethods>
327+
<AndroidEnableMarshalMethods Condition=" '$(AndroidEnableMarshalMethods)' == '' ">False</AndroidEnableMarshalMethods>
328328
<_AndroidUseMarshalMethods Condition=" '$(AndroidIncludeDebugSymbols)' == 'True' ">False</_AndroidUseMarshalMethods>
329329
<_AndroidUseMarshalMethods Condition=" '$(AndroidIncludeDebugSymbols)' != 'True' ">$(AndroidEnableMarshalMethods)</_AndroidUseMarshalMethods>
330330
</PropertyGroup>

0 commit comments

Comments
 (0)