Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何排除Xamarin Android中的SIGSEGV崩溃_Android_Xamarin_Xamarin.android_Segmentation Fault - Fatal编程技术网

如何排除Xamarin Android中的SIGSEGV崩溃

如何排除Xamarin Android中的SIGSEGV崩溃,android,xamarin,xamarin.android,segmentation-fault,Android,Xamarin,Xamarin.android,Segmentation Fault,我们刚刚向play store发布了Android应用程序的新版本,现在用户报告了崩溃。我们能够复制,但是它在整个应用程序中随机发生,是SIGSEGV崩溃 根据回溯,最后两次崩溃似乎都与ImageView有关 碰撞#1: A/DEBUG(6953):#00 pc 000c1178/system/lib/libandroid_runtime.so 04-13 17:26:53.640:A/调试(6953):#01 pc 020813ce /system/framework/x86/boot-fr

我们刚刚向play store发布了Android应用程序的新版本,现在用户报告了崩溃。我们能够复制,但是它在整个应用程序中随机发生,是SIGSEGV崩溃

根据回溯,最后两次崩溃似乎都与ImageView有关

碰撞#1:

A/DEBUG(6953):#00 pc 000c1178/system/lib/libandroid_runtime.so 04-13 17:26:53.640:A/调试(6953):#01 pc 020813ce /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.view.RenderNode.ngettTransferormmatrix+138)04-13 17:26:53.640: A/调试(6953):#02 pc 020845cd /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.view.RenderNode.getMatrix+89)04-13 17:26:53.640: A/调试(6953):#03 pc 020082dd /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.view.view.getMatrix+89)04-13 17:26:53.640:A/DEBUG(6953):

04 pc 02061f2b/system/framework/x86/boot-framework.oat(偏移量0x1588000)(android.view.ViewGroup.invalidateChild+119)04-13 17:26:53.640:A/调试(6953):#05 pc 0200bda1 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.view.view.invalidateInternal+541)04-13 17:26:53.640: A/调试(6953):#06 pc 0200ba3b /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.view.view.invalidate+103)04-13 17:26:53.640:A/DEBUG(6953):

07 pc 0200b822/system/framework/x86/boot-framework.oat(偏移量0x1588000)(安卓.视图.视图无效+46)04-13 17:26:53.640: A/调试(6953):#08 pc 0216c878 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.widget.ImageView.setImageDrawable+180)

碰撞#2:

/system/lib/libskia.so (_zn8skmatrix13测试仪字符6 skrect2_NS_10刻度固定+289)04-13 17:59:57.981:A/DEBUG(8047):#01 pc 000f7c9d /system/lib/libu runtime.so (_zn7android12skmatrixglue13setrectorecep7_JNIEnvP8_jobjectxS4_S4_i+134) 04-13 17:59:57.981:A/调试(8047):#02 pc 01936e62 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.graphics.Matrix.native_setRectToRect+190)04-13 17:59:57.981: A/调试(8047):#03 pc 01939373 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.graphics.Matrix.setRectToRect+127)04-13 17:59:57.981: A/调试(8047):#04 pc 0216977d /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.widget.ImageView.configureBounds+1625)04-13 17:59:57.981: A/调试(8047):#05 pc 0216b253 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.widget.ImageView.invalidateDrawable+159)04-13 17:59:57.981: A/调试(8047):#06 pc 0170f783 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.graphics.drawable.drawable.invalidateSelf+79)04-13 17:59:57.981:A/调试(8047):#07 pc 017100f5 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.graphics.drawable.drawable.setVisible+81)04-13 17:59:57.981: A/调试(8047):#08 pc 0216a91f /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.widget.ImageView.updateDrawable+619)04-13 17:59:57.981: A/DEBUG(8047):#09 pc 0216c829 /system/framework/x86/boot-framework.oat(偏移量0x1588000) (android.widget.ImageView.setImageDrawable+101)

我不清楚如何对SIGSEGV崩溃进行故障排除,因为它们似乎级别较低,并且不包含来自实际代码的堆栈跟踪。它们通常是我作为应用程序开发人员可以控制的崩溃,还是Xamarin的bug?我的最佳选择是尝试降级我的Xamarin软件包(这可能很困难,他们的下载页面现在只提供最后两个版本…),有人有过这样的经验吗

致命信号11(SIGSEGV),代码1,故障地址0x0

您的应用程序正在访问一个引用(对象/等…),该引用已被释放/取消引用,因为其地址为零(0x0)

在本例中,您为ImageView指定了一个错误的可绘制位图,该位图是
Release
,或者是GC'd,或者只是不可用

您可以使用
mono symbolicate
向该
logcat
回溯/崩溃添加符号:


报告中的崩溃是一个
致命信号11(SIGSEGV),代码1,故障地址0x0
(假设com.rpr.mobile是您的应用程序),因此您的应用程序正在访问一个引用(对象/等…),该引用已被释放/取消引用,因为其地址为零(0x0)。将崩溃日志符号化,因为在本例中,您为ImageView分配了一个不好的可绘制文件(位图已发布或已GC’d,或只是不可用)。@SushiHangover谢谢,您已经正确无误了。我们不手动调用SetImageDrawable,我们使用一个名为FFImageLoading的库来处理这个问题,但是我们有一些代码,当我们的自定义imageview控件从内存中释放时,可以手动处理位图/Drawable。当我禁用这个自定义代码时,SIGSEGV就消失了。奇怪的是,这段代码以前运行得很好,只有在最新的Xamarin安装中才会抛出SIGSEGV。在任何情况下,请将您的评论作为回答,我会接受。很高兴它有帮助。很可能是新的Xamarin.Android版本使用了不同的GC默认值,GCing速度更快,修复了JavaJNI/JavaVM泄漏中的引用,等等。。。必须知道您使用的是哪个版本以及更新到的是什么。。。。我从我的组织中添加了一个答案。评论。
(6953): backtrace:
~~~
(android.view.RenderNode.getMatrix+89)
(android.view.View.getMatrix+89)
(android.view.ViewGroup.invalidateChild+119)
(android.view.View.invalidateInternal+541)
(android.view.View.invalidate+103)
(android.view.View.invalidate+46)
(android.widget.ImageView.setImageDrawable+180)
~~~