如何使用libmonosgen-2.0.so?

时间:2017-09-13 09:40:32

标签: xamarin xamarin.android

我有一段时间没有任何.Net堆栈跟踪,但是有一个小的Android堆栈跟踪(只有1个stackitem)指向libmonosgen-2.0.so。 崩溃是随机发生的;当应用程序在随机实际设备上做很多事情或做很多事情,调试或发布版本时,从后台线程或主线程等等。

任何人都知道如何处理这个??? (它似乎是单声道/ xamarin的事情,也许是一个已知的问题?)

我的开发配置: VS2017,Android 7.0和7.0(最低5.0),所有Xamarin软件包更新,所有Android SDK库更新,MVVMCross 4.4

我添加了3个崩溃日志 崩溃1:

09-11 10:59:51.340 I/DEBUG ( 352): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x3f800000 
09-11 10:59:51.350 I/DEBUG (352): r0 3f800000 r1 aef6b0a4 r2 00001867 r3 53677a96 
09-11 10:59:51.350 I/DEBUG ( 352): r4 ae90ee68 r5 b489db70 r6 00000000 r7 3f800000 
09-11 10:59:51.350 I/DEBUG ( 352): r8 b489db88 r9 161129ff sl bea85998 fp bea858e8 
09-11 10:59:51.350 I/DEBUG ( 352): ip af1364f8 sp bea858d8 lr af06c5b8 pc aef6b0a4 cpsr 200f0010 
09-11 10:59:51.350 I/DEBUG ( 352):  
09-11 10:59:51.350 I/DEBUG ( 352): backtrace: 
09-11 10:59:51.350 I/DEBUG ( 352): #00 pc 0017a0a4 /data/app/myApp/lib/arm/libmonosgen-2.0.so

崩溃2:

09-11 14:15:50.890 I/DEBUG ( 352): pid: 28398, tid: 28398, name: myApp
09-11 14:15:50.890 I/DEBUG ( 352): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7cfbc1a5 
09-11 14:15:50.900 I/DEBUG (352): r0 7cfbc1a1 r1 7cfbc1a1 r2 bea847f8 r3 aef301e4 
09-11 14:15:50.900 I/DEBUG ( 352): r4 b489d800 r5 7cfbc1a1 r6 b4946000 r7 9ba2f768 
09-11 14:15:50.900 I/DEBUG ( 352): r8 bea847f8 r9 b4827800 sl 00000000 fp bea847b8 
09-11 14:15:50.900 I/DEBUG ( 352): ip af136290 sp bea847a8 lr af003544 pc aef301bc cpsr 20070010 
09-11 14:15:50.900 I/DEBUG ( 352):  
09-11 14:15:50.900 I/DEBUG ( 352): backtrace: 
09-11 14:15:50.900 I/DEBUG ( 352): #00 pc 0013f1bc /data/app/myApp/lib/arm/libmonosgen-2.0.so (mono_class_from_mono_type+8)

崩溃3:

09-11 16:21:54.470 I/DEBUG ( 164): ABI: 'arm' 
09-11 16:21:54.471 I/DEBUG ( 164): pid: 9467, tid: 9467, name: myApp 
09-11 16:21:54.471 I/DEBUG ( 164): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xf0b9bc14 
09-11 16:21:54.499 I/DEBUG ( 164): r0 f0b9bbf4 r1 ba1e67c8 r2 00000049 r3 b9171668 
09-11 16:21:54.499 I/DEBUG ( 164): r4 ba1e67c8 r5 00000000 r6 a5085d18 r7 b9bbf529 
09-11 16:21:54.499 I/DEBUG ( 164): r8 ba1e67c8 r9 b9171668 sl b9bb52ac fp bed8f9d8 
09-11 16:21:54.499 I/DEBUG ( 164): ip f0b9bbf4 sp bed8f9c0 lr a516d034 pc a5085d20 cpsr a00f0110 
09-11 16:21:54.503 I/DEBUG ( 164):  
09-11 16:21:54.503 I/DEBUG ( 164): backtrace: 
09-11 16:21:54.503 I/DEBUG ( 164): #00 pc 001a8d20 /data/app/myApp/lib/arm/libmonosgen-2.0.so

修改

@ york-shen-msft stil等待崩溃再次发生,但我的崩溃包括libmonosgen-2.0和.Net stacktrace。

crash log (搜索'致命',上面是.Net stacktrace)

source code 它发生在一个永远不会崩溃的Linq方法中,所以非常奇怪的行为。

1 个答案:

答案 0 :(得分:1)

事实证明,MVVMCross是使用更高版本的Android版本构建/测试的,然后我正在构建我的应用程序。

将我的App构建版本与MVVMCross相同的版本对齐后,构建libmonosgen所有奇怪的崩溃或没有任何堆栈跟踪消失。

(一些额外的调查显示很多反射错误未找到正确的方法,可能是因为Android SDK不匹配)