我们最近在我们的应用程序中遇到了一些非常奇怪的崩溃事件。它们不可靠地重现。到目前为止,崩溃都发生在 iOS 11 设备上。我们的应用程序是用 Swift 3.2 编写的。我们正在使用 Xcode 9.0.1 和标准构建系统(而不是新的Swift构建系统)。似乎在执行某个Web请求后,应用程序崩溃了下面的堆栈跟踪:
Crashed: com.apple.main-thread
0 OurFramework 0x105283e84 __swift_deallocate_boxed_opaque_existential_0 + 2588
1 OurFramework 0x10528366c __swift_deallocate_boxed_opaque_existential_0 + 516
2 OurFramework 0x10528b368 swift_rt_swift_storeEnumTagSinglePayload + 24748
3 OurFramework 0x1052911cc swift_rt_swift_storeEnumTagSinglePayload + 48912
4 OurFramework 0x1052133d8 __swift_memmove_array32_8 + 1336
5 OurFramework 0x10521304c __swift_memmove_array32_8 + 428
6 OurFramework 0x105292504 swift_rt_swift_storeEnumTagSinglePayload + 53832
7 Alamofire 0x1057cac64 _T09Alamofire11DataRequestC8responseACXDSo13DispatchQueueCSg5queue_x0D10SerializeryAA0B8ResponseVy16SerializedObjectQzGc17completionHandlertAA0biH8ProtocolRzlFyycfU_yycfU_AA0biH0VyypG_Tg5 + 264
8 Alamofire 0x1057ca3f8 _T0Ix_IyB_TR + 36
9 libdispatch.dylib 0x1860c5088 _dispatch_call_block_and_release + 24
10 libdispatch.dylib 0x1860c5048 _dispatch_client_callout + 16
11 libdispatch.dylib 0x1860d1b74 _dispatch_main_queue_callback_4CF$VARIANT$mp + 1016
12 CoreFoundation 0x1866e9eb0 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
13 CoreFoundation 0x1866e7a8c __CFRunLoopRun + 2012
14 CoreFoundation 0x186607fb8 CFRunLoopRunSpecific + 436
15 GraphicsServices 0x18849ff84 GSEventRunModal + 100
16 UIKit 0x18fbdc2e8 UIApplicationMain + 208
17 OurApp 0x104de98b0 main (main.swift:19)
18 libdyld.dylib 0x18612a56c start + 4
我们正在使用 Crashlytics 来跟踪我们的崩溃,我不确定是否因为符号问题我没有看到比此更多的信息但是跟踪表明出现了问题在网络请求期间。我们的应用使用 Alamofire 来发布网络请求。我们在此次崩溃发生时的测试结果也支持这一理论,因为崩溃总是在应用程序向我们的后端发出请求后立即发生。可能是在iOS 11中,Alamofire使用的底层NSURLSession中发生了哪些变化?也许iOS 11正在使用不同的缓存策略或导致alamofire以导致此崩溃的方式调用我们的结果完成处理程序的东西?有没有人见过这种崩溃? __ swift_deallocate_boxed_opaque_existential 和 swift_rt_swift_storeEnumTagSinglePayload 是什么意思?非常感谢任何帮助,谢谢!