Skip to content

Commit d6240d4

Browse files
[Xamarin.Android.Build.Tasks] Disable LLVM marshal methods (#9336) (#9346)
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& Co-authored-by: Marek Habersack <[email protected]>
1 parent 4408b83 commit d6240d4

File tree

3 files changed

+82
-79
lines changed

3 files changed

+82
-79
lines changed

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,34 @@
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": 69163
1515
},
1616
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
17-
"Size": 98660
17+
"Size": 98246
1818
},
1919
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
20-
"Size": 5315
20+
"Size": 5310
2121
},
2222
"lib/arm64-v8a/lib_System.Console.dll.so": {
23-
"Size": 7294
23+
"Size": 7291
2424
},
2525
"lib/arm64-v8a/lib_System.Linq.dll.so": {
26-
"Size": 9390
26+
"Size": 9388
2727
},
2828
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
29-
"Size": 616700
29+
"Size": 616826
3030
},
3131
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
32-
"Size": 2956
32+
"Size": 2954
3333
},
3434
"lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": {
35-
"Size": 4502
35+
"Size": 4498
3636
},
3737
"lib/arm64-v8a/lib_UnnamedProject.dll.so": {
3838
"Size": 2932
@@ -44,7 +44,7 @@
4444
"Size": 87432
4545
},
4646
"lib/arm64-v8a/libmonodroid.so": {
47-
"Size": 484920
47+
"Size": 484568
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": 12536
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": 2857493
102102
}

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

Lines changed: 68 additions & 65 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,169 +35,169 @@
3235
"Size": 2363
3336
},
3437
"lib/arm64-v8a/lib_FormsViewGroup.dll.so": {
35-
"Size": 8330
38+
"Size": 8090
3639
},
3740
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
38-
"Size": 77673
41+
"Size": 77546
3942
},
4043
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
41-
"Size": 506473
44+
"Size": 504730
4245
},
4346
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
44-
"Size": 5315
47+
"Size": 5310
4548
},
4649
"lib/arm64-v8a/lib_mscorlib.dll.so": {
47-
"Size": 4344
50+
"Size": 4345
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": 12712
5457
},
5558
"lib/arm64-v8a/lib_System.Collections.dll.so": {
56-
"Size": 19198
59+
"Size": 19195
5760
},
5861
"lib/arm64-v8a/lib_System.Collections.NonGeneric.dll.so": {
59-
"Size": 8668
62+
"Size": 8665
6063
},
6164
"lib/arm64-v8a/lib_System.Collections.Specialized.dll.so": {
62-
"Size": 6756
65+
"Size": 6755
6366
},
6467
"lib/arm64-v8a/lib_System.ComponentModel.dll.so": {
6568
"Size": 2496
6669
},
6770
"lib/arm64-v8a/lib_System.ComponentModel.Primitives.dll.so": {
68-
"Size": 4212
71+
"Size": 4208
6972
},
7073
"lib/arm64-v8a/lib_System.ComponentModel.TypeConverter.dll.so": {
71-
"Size": 25362
74+
"Size": 25360
7275
},
7376
"lib/arm64-v8a/lib_System.Console.dll.so": {
74-
"Size": 7331
77+
"Size": 7327
7578
},
7679
"lib/arm64-v8a/lib_System.Core.dll.so": {
77-
"Size": 2365
80+
"Size": 2364
7881
},
7982
"lib/arm64-v8a/lib_System.Diagnostics.DiagnosticSource.dll.so": {
80-
"Size": 11349
83+
"Size": 11351
8184
},
8285
"lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": {
83-
"Size": 7601
86+
"Size": 7597
8487
},
8588
"lib/arm64-v8a/lib_System.dll.so": {
86-
"Size": 2765
89+
"Size": 2764
8790
},
8891
"lib/arm64-v8a/lib_System.Drawing.dll.so": {
89-
"Size": 2342
92+
"Size": 2340
9093
},
9194
"lib/arm64-v8a/lib_System.Drawing.Primitives.dll.so": {
92-
"Size": 12959
95+
"Size": 12957
9396
},
9497
"lib/arm64-v8a/lib_System.Formats.Asn1.dll.so": {
95-
"Size": 32843
98+
"Size": 32845
9699
},
97100
"lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": {
98-
"Size": 12393
101+
"Size": 12389
99102
},
100103
"lib/arm64-v8a/lib_System.IO.Compression.dll.so": {
101-
"Size": 16696
104+
"Size": 16695
102105
},
103106
"lib/arm64-v8a/lib_System.IO.IsolatedStorage.dll.so": {
104-
"Size": 11196
107+
"Size": 11194
105108
},
106109
"lib/arm64-v8a/lib_System.Linq.dll.so": {
107-
"Size": 21645
110+
"Size": 21643
108111
},
109112
"lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": {
110-
"Size": 168722
113+
"Size": 168719
111114
},
112115
"lib/arm64-v8a/lib_System.Net.Http.dll.so": {
113-
"Size": 72400
116+
"Size": 72404
114117
},
115118
"lib/arm64-v8a/lib_System.Net.Primitives.dll.so": {
116-
"Size": 24022
119+
"Size": 24027
117120
},
118121
"lib/arm64-v8a/lib_System.Net.Requests.dll.so": {
119-
"Size": 4461
122+
"Size": 4459
120123
},
121124
"lib/arm64-v8a/lib_System.ObjectModel.dll.so": {
122-
"Size": 9981
125+
"Size": 9979
123126
},
124127
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
125-
"Size": 939274
128+
"Size": 939319
126129
},
127130
"lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": {
128-
"Size": 199596
131+
"Size": 199599
129132
},
130133
"lib/arm64-v8a/lib_System.Private.Uri.dll.so": {
131-
"Size": 45095
134+
"Size": 45102
132135
},
133136
"lib/arm64-v8a/lib_System.Private.Xml.dll.so": {
134-
"Size": 220007
137+
"Size": 220011
135138
},
136139
"lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": {
137-
"Size": 18497
140+
"Size": 18496
138141
},
139142
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
140-
"Size": 3111
143+
"Size": 3108
141144
},
142145
"lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": {
143-
"Size": 4502
146+
"Size": 4498
144147
},
145148
"lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": {
146-
"Size": 37312
149+
"Size": 37318
147150
},
148151
"lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": {
149-
"Size": 2265
152+
"Size": 2264
150153
},
151154
"lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": {
152-
"Size": 3243
155+
"Size": 3242
153156
},
154157
"lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": {
155-
"Size": 4361
158+
"Size": 4359
156159
},
157160
"lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": {
158-
"Size": 63408
161+
"Size": 63412
159162
},
160163
"lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": {
161-
"Size": 166506
164+
"Size": 166503
162165
},
163166
"lib/arm64-v8a/lib_System.Xml.dll.so": {
164-
"Size": 2167
167+
"Size": 2166
165168
},
166169
"lib/arm64-v8a/lib_System.Xml.Linq.dll.so": {
167-
"Size": 2181
170+
"Size": 2179
168171
},
169172
"lib/arm64-v8a/lib_UnnamedProject.dll.so": {
170-
"Size": 5007
173+
"Size": 5006
171174
},
172175
"lib/arm64-v8a/lib_Xamarin.AndroidX.Activity.dll.so": {
173-
"Size": 17872
176+
"Size": 17665
174177
},
175178
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.AppCompatResources.dll.so": {
176-
"Size": 7425
179+
"Size": 7203
177180
},
178181
"lib/arm64-v8a/lib_Xamarin.AndroidX.AppCompat.dll.so": {
179-
"Size": 146152
182+
"Size": 145980
180183
},
181184
"lib/arm64-v8a/lib_Xamarin.AndroidX.CardView.dll.so": {
182-
"Size": 7469
185+
"Size": 7472
183186
},
184187
"lib/arm64-v8a/lib_Xamarin.AndroidX.CoordinatorLayout.dll.so": {
185-
"Size": 18823
188+
"Size": 18592
186189
},
187190
"lib/arm64-v8a/lib_Xamarin.AndroidX.Core.dll.so": {
188-
"Size": 134318
191+
"Size": 134121
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": 16666
195198
},
196199
"lib/arm64-v8a/lib_Xamarin.AndroidX.Fragment.dll.so": {
197-
"Size": 55435
200+
"Size": 55131
198201
},
199202
"lib/arm64-v8a/lib_Xamarin.AndroidX.Legacy.Support.Core.UI.dll.so": {
200203
"Size": 6806
@@ -212,22 +215,22 @@
212215
"Size": 14499
213216
},
214217
"lib/arm64-v8a/lib_Xamarin.AndroidX.RecyclerView.dll.so": {
215-
"Size": 95162
218+
"Size": 94806
216219
},
217220
"lib/arm64-v8a/lib_Xamarin.AndroidX.SavedState.dll.so": {
218-
"Size": 6050
221+
"Size": 6051
219222
},
220223
"lib/arm64-v8a/lib_Xamarin.AndroidX.SwipeRefreshLayout.dll.so": {
221-
"Size": 14858
224+
"Size": 14578
222225
},
223226
"lib/arm64-v8a/lib_Xamarin.AndroidX.ViewPager.dll.so": {
224-
"Size": 20961
227+
"Size": 20659
225228
},
226229
"lib/arm64-v8a/lib_Xamarin.Forms.Core.dll.so": {
227230
"Size": 563905
228231
},
229232
"lib/arm64-v8a/lib_Xamarin.Forms.Platform.Android.dll.so": {
230-
"Size": 373374
233+
"Size": 373373
231234
},
232235
"lib/arm64-v8a/lib_Xamarin.Forms.Platform.dll.so": {
233236
"Size": 18753
@@ -236,7 +239,7 @@
236239
"Size": 63542
237240
},
238241
"lib/arm64-v8a/lib_Xamarin.Google.Android.Material.dll.so": {
239-
"Size": 67675
242+
"Size": 67309
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": 484568
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": 119816
267270
},
268271
"META-INF/androidx.activity_activity.version": {
269272
"Size": 6
@@ -416,10 +419,10 @@
416419
"Size": 6
417420
},
418421
"META-INF/BNDLTOOL.RSA": {
419-
"Size": 1223
422+
"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": 10579211
2492+
"PackageSize": 10624325
24902493
}

0 commit comments

Comments
 (0)