Visual Studio 2019-致命信号11(SIGSEGV),代码2(SEGV_ACCERR),tid 1250



自从使用Visual Studio 2019或2022编译我的Xamarin Android项目超过3周以来,我一直遇到致命信号错误。

我使用了ndk堆栈和其他工具来查看任何有意义的堆栈跟踪,但我失败了,因此我们的项目无法进行。

请注意,如果我使用visual Studio 2017制作APK,那么相同的代码库可以非常稳定地工作。

Visual Studio 2019使用Xamarin.Andriod.SDK 12.0.0.3

Visual Studio 2017使用Xamarin.Android.SDK 9.7.1.0

我曾尝试升级到Android 12,但我们的项目规模巨大,需要大量的工作。在这一点上,这似乎不是一个选择。

我想使用2019年或2022年的原因是因为谷歌play商店和生产应用捆绑包而不是APK。Visual Studio 2017没有应用捆绑包选项。

我的项目以Android 9为目标,我也在使用PortSip库。我做了大量的谷歌搜索。如果2019年Xamarin Android SKD有问题,或者我的三星设备标签S6有问题,我还没有找到任何确凿的证据。我在这里找到的唯一答案是:为什么应用程序随机终止?

如果这就是为什么2017年生产的APK没有任何分段故障或任何竞赛条件的原因。

我在c#中有处理程序来捕捉任何错误,但没有一个处理程序能捕捉到这些错误。我的应用程序使用谷歌地图,我们正在地图上绘制许多图层和更新。

我的应用程序还接收许多信号器更新并调用WCF服务。

错误示例:

03-09 19:54:53.811 9984 12254 F libc:致命信号11(SIGSEGV(,代码1(SEGV_MAPERR(,tid 12254中的故障地址0x400000080(线程池Wor(,pid 9984(------(03-09 19:54:53.836 12404 12404 E铬:[0309/19453.835730:错误:scoped_ptrace_attach.cc(27(]ptrace:不允许操作(1(

03-11 00:35:05.469 27236 27236 F调试:信号11(SIGSEGV(,代码1(SEGV_MAPERR(,故障地址0x7c13725238

我们在PortSip中遇到了非常类似的问题(由PortSip的垃圾回收线程引起的null引用异常(。我们发现问题出在关键类PortSip构造函数包含与其他类的相互引用的方式上。当这些类被处理时,垃圾收集线程上发生了null引用异常。

你报告说";我在C#中有处理程序来捕捉任何错误,但它们都没有捕捉到这些"错误";。我们发现情况也是如此。事实证明,由于崩溃发生在PortSip库内的CG线程上,在C#中添加错误处理没有任何效果。

如果您的崩溃也出现了这些症状,我将深入研究代码并记录我们的解决方案。

最新更新