在 Xamarin.IOS 中执行本机代码时获得 SIGSEGV

Posted

技术标签:

【中文标题】在 Xamarin.IOS 中执行本机代码时获得 SIGSEGV【英文标题】:Got a SIGSEGV while executing native code in Xamarin.IOS 【发布时间】:2017-09-13 13:50:56 【问题描述】:

模拟器和 xamarin 之间的链接在几秒钟后停止(模拟器是白色的)并且我能够再次按下播放按钮。我在这个 ios 项目中使用 Xamarin.Forms。我已经在 Xamarin Studio 和 Visual Studio 的最新版本中尝试过这个。

本机堆栈跟踪:

2017-09-13 14:22:34.113 NewsTestOne.iOS[25106:19993674] critical:   0   NewsTestOne.iOS                     0x0000000106847184
mono_handle_native_crash + 244
2017-09-13 14:22:34.113 NewsTestOne.iOS[25106:19993674] critical:   1   NewsTestOne.iOS                     0x000000010685320b mono_sigsegv_signal_handler + 171
2017-09-13 14:22:34.114 NewsTestOne.iOS[25106:19993674] critical:   2   libsystem_platform.dylib            0x000000010d451b3a _sigtramp + 26
2017-09-13 14:22:34.114 NewsTestOne.iOS[25106:19993674] critical:   3   ???                                 0x0003f78b358d56aa 0x0 + 1116602201101994
2017-09-13 14:22:34.114 NewsTestOne.iOS[25106:19993674] critical:   4   CFNetwork                           0x000000010bc51e2e _ZN15TCPIOConnection16_startConnectionEv + 530
2017-09-13 14:22:34.114 NewsTestOne.iOS[25106:19993674] critical:   5   CFNetwork                           0x000000010bd8e32a ___ZN4Tube23_onqueue_prepConnectionEU13block_pointerFvvEU13block_pointerFviE_block_invoke.67 + 726
2017-09-13 14:22:34.114 NewsTestOne.iOS[25106:19993674] critical:   6   CFNetwork                           0x000000010bd8e807 ___ZN4Tube23_onqueue_prepConnectionEU13block_pointerFvvEU13block_pointerFviE_block_invoke_2.83 + 21
2017-09-13 14:22:34.115 NewsTestOne.iOS[25106:19993674] critical:   7   libdispatch.dylib                   0x000000010d0ae585 _dispatch_call_block_and_release + 12
2017-09-13 14:22:34.115 NewsTestOne.iOS[25106:19993674] critical:   8   libdispatch.dylib                   0x000000010d0cf792 _dispatch_client_callout + 8
2017-09-13 14:22:34.115 NewsTestOne.iOS[25106:19993674] critical:   9   libdispatch.dylib                   0x000000010d0b5237 _dispatch_queue_serial_drain + 1022
2017-09-13 14:22:34.115 NewsTestOne.iOS[25106:19993674] critical:   10  libdispatch.dylib                   0x000000010d0b598f _dispatch_queue_invoke + 1053
2017-09-13 14:22:34.115 NewsTestOne.iOS[25106:19993674] critical:   11  libdispatch.dylib                   0x000000010d0b7899 _dispatch_root_queue_drain + 813
2017-09-13 14:22:34.116 NewsTestOne.iOS[25106:19993674] critical:   12  libdispatch.dylib                   0x000000010d0b750d _dispatch_worker_thread3 + 113
2017-09-13 14:22:34.116 NewsTestOne.iOS[25106:19993674] critical:   13  libsystem_pthread.dylib             0x000000010d4635a2 _pthread_wqthread + 1299
2017-09-13 14:22:34.116 NewsTestOne.iOS[25106:19993674] critical:   14  libsystem_pthread.dylib             0x000000010d46307d start_wqthread + 13
2017-09-13 14:22:34.116 NewsTestOne.iOS[25106:19993674] critical: 

=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================

【问题讨论】:

【参考方案1】:

这通常表明你的代码有线程错误,我建议你调试所有异步的服务器端调用,可能有很多类似的东西:

在后台线程中运行的 Task.Run 方法试图更新 UI 属性。

在异步任务中使用的Custom RendererDependency Service

如果您的代码中有计时器,也请查看它们。

使用最新版本的 Xamarin,调试器无法正确调试本机代码,因此请确保清理解决方案并尝试在真实设备上进行调试。 (有时也摆脱断点会有所帮助。)

【讨论】:

以上是关于在 Xamarin.IOS 中执行本机代码时获得 SIGSEGV的主要内容,如果未能解决你的问题,请参考以下文章

“无效的 Swift 支持”在 Xamarin.iOS 中使用本机 Swift 库

Xamarin.forms(或)xamarin.ios/xamarin.android(或)本机

Xamarin iOS App 在已最小化时无法执行代码

如何在 Xamarin.iOS 中正确包装本机 c 库

如何在Xamarin.iOS本机平台中扩展tableview单元格?

从 Xamarin.iOS 绑定库中引用 Storyboard