仅在从 iOS8 升级到 iOS 9.2 后,应用程序才在第二次启动时崩溃
App crashing on second launch only after upgrading from iOS8 to iOS 9.2
我有一个 SceneKit project
可以完美启动和运行。然后一旦关闭并重新启动,无论是通过 Xcode 还是在设备本身(从后台关闭并重新启动),它都会立即崩溃,导致无法访问。
有趣的是,我打开了几个月前没有这个问题的项目备份,但它导致了同样的问题。唯一的区别是我现在在我的测试设备上使用 运行 Xcode 7
和 iOS 9.2
,而我使用的是 iOS 8
.
项目的目标仍然是iOS 8
。
另外值得注意的是它也发生在模拟器中。
编辑:对于宽泛的问题表示歉意,我正在寻找一个已知的 iOS 问题,而不是没有代码的神奇修复。
崩溃日志
Incident Identifier: 676B8947-EF5F-4C97-8290-8FE337413E4B
CrashReporter Key: 9b475d8cebee657e23490f227c1da0af5969c462
Hardware Model: iPhone8,1
Process: Control [1617]
Path: /private/var/mobile/Containers/Bundle/Application/E6B75EF7-E649-4D46-9B33-4156ECF64458/Control.app/Control
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-12-28 23:14:08.08 +1100
Launch Time: 2015-12-28 23:14:07.07 +1100
OS Version: iOS 9.2 (13C75)
Report Version: 105
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000100012140
Triggered by Thread: 7
Filtered syslog:
None found
Global Trace Buffer (reverse chronological seconds):
6148914689.570968 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.570969 AppleJPEG 0x0000000182aa0ff4 [0x14c8a8e00] Decoding completed without errors
6148914689.572388 AppleJPEG 0x0000000182a9f18c [0x14c8a8e00] Options: 256x256 [FFFFFFFF,FFFFFFFF] 00025060
6148914689.572388 AppleJPEG 0x0000000182a9f044 [0x14c8a8e00] Decoding: C0 0x01000100 0x0000354A 0x11111100 0x00000000 20945
6148914689.574243 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.574243 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.574243 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.574243 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.578250 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.578250 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.578250 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.578250 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.650289 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.650289 AppleJPEG 0x0000000182a9eb54 [0x14d0f9c00] Releasing session
6148914689.651874 AppleJPEG 0x0000000182a9e338 [0x14d0f9c00] Created session
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x0000000180fc14bc mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000180fc1338 mach_msg + 72
2 CoreFoundation 0x00000001813f0ac0 __CFRunLoopServiceMachPort + 196
3 CoreFoundation 0x00000001813ee7c4 __CFRunLoopRun + 1032
4 CoreFoundation 0x000000018131d680 CFRunLoopRunSpecific + 384
5 GraphicsServices 0x000000018282c088 GSEventRunModal + 180
6 UIKit 0x0000000186194d90 UIApplicationMain + 204
7 Control 0x00000001000e9e48 0x1000d0000 + 106056
8 libdyld.dylib 0x0000000180ebe8b8 start + 4
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x0000000180fdd4fc kevent_qos + 8
1 libdispatch.dylib 0x0000000180ea094c _dispatch_mgr_invoke + 232
2 libdispatch.dylib 0x0000000180e8f7bc _dispatch_source_invoke + 0
Thread 2:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 3:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 4:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 5:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 6:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 7 name: Dispatch queue: com.apple.scenekit.renderingQueue.GameView0x14c65dd30
Thread 7 Crashed:
0 libdispatch.dylib 0x0000000180e90090 dispatch_semaphore_signal + 4
1 Jet 0x000000018eb21f80 jet_context::clear_fenced_buffers(std::__1::shared_ptr<jet_fence>) + 100
2 Jet 0x000000018eb2d834 jet_context_Metal::create_fence() + 168
3 Jet 0x000000018eb2d6c4 jet_context_Metal::commit() + 36
4 Jet 0x000000018eb2bf50 jet_context_Metal::begin_render_pass(jet_framebuffer*) + 156
5 Jet 0x000000018eb1fdc0 jet_context::execute_command_buffer(jet_command_buffer*) + 1528
6 Jet 0x000000018eb200f0 jet_context::submit_command_buffer_impl(jet_command_buffer*) + 56
7 SpriteKit 0x000000018ed16764 SKCRenderer::flushRenderOps() + 272
8 SpriteKit 0x000000018ed1883c SKCRenderer::render(SKCNode*, float vector[4], std::__1::shared_ptr<jet_framebuffer> const&, unsigned int vector[4], matrix_float4x4, bool, NSDictionary*, SKCStats*, SKCStats*) + 1740
9 SpriteKit 0x000000018ec83e74 -[SKSCNRenderer renderWithEncoder:pass:commandQueue:] + 520
10 SceneKit 0x000000018f825c08 -[SCNRenderer _drawOverlaySceneAtTime:] + 316
11 SceneKit 0x000000018f88403c __C3DEngineContextRenderPassInstance + 628
12 SceneKit 0x000000018f885020 C3DEngineContextRenderMainTechnique + 1352
13 SceneKit 0x000000018f824d28 -[SCNRenderer _renderScene:sceneTime:] + 364
14 SceneKit 0x000000018f824e78 -[SCNRenderer _drawSceneWithNewRenderer:] + 264
15 SceneKit 0x000000018f825378 -[SCNRenderer _drawScene:] + 84
16 SceneKit 0x000000018f82567c -[SCNRenderer _draw] + 636
17 SceneKit 0x000000018f87ea6c -[SCNView _drawAtTime:] + 464
18 SceneKit 0x000000018f8553a8 __49-[SCNDisplayLink _callbackWithTime:andDeltaTime:]_block_invoke + 96
19 libdispatch.dylib 0x0000000180e8d630 _dispatch_call_block_and_release + 24
20 libdispatch.dylib 0x0000000180e8d5f0 _dispatch_client_callout + 16
21 libdispatch.dylib 0x0000000180e99634 _dispatch_queue_drain + 864
22 libdispatch.dylib 0x0000000180e910f4 _dispatch_queue_invoke + 464
23 libdispatch.dylib 0x0000000180e9b504 _dispatch_root_queue_drain + 728
24 libdispatch.dylib 0x0000000180e9daa8 _dispatch_worker_thread + 124
25 libsystem_pthread.dylib 0x00000001810a3b28 _pthread_body + 156
26 libsystem_pthread.dylib 0x00000001810a3a8c _pthread_body + 0
27 libsystem_pthread.dylib 0x00000001810a1028 thread_start + 4
Thread 7 crashed with ARM Thread State (64-bit):
x0: 0x0000000100012100 x1: 0x000000016e35e300 x2: 0x0000000000000002 x3: 0x000000014c685660
x4: 0x0000000000000001 x5: 0x0000000000000000 x6: 0x0000000180a9d974 x7: 0x0000000000000000
x8: 0x000000014c662200 x9: 0x0000008a00012000 x10: 0x0000000100012140 x11: 0x0000000000000000
x12: 0x0000000000049410 x13: 0x0000000000049410 x14: 0x00000000ffffffff x15: 0x00000000ffffffec
x16: 0x0000000180e9008c x17: 0x000000018edbd848 x18: 0x0000000000000000 x19: 0x000000014c6aeb60
x20: 0x000000016e35e300 x21: 0x000000014c6d0ea0 x22: 0x000000014c684ba0 x23: 0x000000014c65a080
x24: 0x000000014c6f6fc0 x25: 0x000000014c685660 x26: 0x00000000000003c0 x27: 0x0000000000000280
x28: 0x000000014d908df0 fp: 0x000000016e35e2f0 lr: 0x000000018eb21f80
sp: 0x000000016e35e2c0 pc: 0x0000000180e90090 cpsr: 0x00000000
崩溃发生在渲染器中。我想知道你是否在为 Metal 中的一个错误发痒?这是现在的默认渲染器,但它是 iOS 8 SDK 中的 OpenGL。
看看SCNView
SCNPreferredRenderingAPI
:
SceneKit attempts to initialize a view using the preferred API you specify in the initWithFrame:options: initializer; if the current device does not support the preferred API, SceneKit automatically falls back to a supported API. After initialization, use the renderingAPI property to find out whether a fallback occurred. For example, if you specify the SCNRenderingAPIMetal option when initializing a view on an iOS device that does not support Metal, SceneKit defaults to the SCNRenderingAPIOpenGLES2 option instead.
不过,由于您的目标是 iOS 8,因此您不能使用 属性。但是你可以set the preferred renderer using your Info.plist。试试看行为是否改变。
这似乎源于 9.2 中与 SpriteKit 粒子发射器相关的已知错误。删除节点或降低出生率已停止崩溃。
我有一个 SceneKit project
可以完美启动和运行。然后一旦关闭并重新启动,无论是通过 Xcode 还是在设备本身(从后台关闭并重新启动),它都会立即崩溃,导致无法访问。
有趣的是,我打开了几个月前没有这个问题的项目备份,但它导致了同样的问题。唯一的区别是我现在在我的测试设备上使用 运行 Xcode 7
和 iOS 9.2
,而我使用的是 iOS 8
.
项目的目标仍然是iOS 8
。
另外值得注意的是它也发生在模拟器中。
编辑:对于宽泛的问题表示歉意,我正在寻找一个已知的 iOS 问题,而不是没有代码的神奇修复。
崩溃日志
Incident Identifier: 676B8947-EF5F-4C97-8290-8FE337413E4B
CrashReporter Key: 9b475d8cebee657e23490f227c1da0af5969c462
Hardware Model: iPhone8,1
Process: Control [1617]
Path: /private/var/mobile/Containers/Bundle/Application/E6B75EF7-E649-4D46-9B33-4156ECF64458/Control.app/Control
Version: 1 (1.0)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
Date/Time: 2015-12-28 23:14:08.08 +1100
Launch Time: 2015-12-28 23:14:07.07 +1100
OS Version: iOS 9.2 (13C75)
Report Version: 105
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000100012140
Triggered by Thread: 7
Filtered syslog:
None found
Global Trace Buffer (reverse chronological seconds):
6148914689.570968 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.570969 AppleJPEG 0x0000000182aa0ff4 [0x14c8a8e00] Decoding completed without errors
6148914689.572388 AppleJPEG 0x0000000182a9f18c [0x14c8a8e00] Options: 256x256 [FFFFFFFF,FFFFFFFF] 00025060
6148914689.572388 AppleJPEG 0x0000000182a9f044 [0x14c8a8e00] Decoding: C0 0x01000100 0x0000354A 0x11111100 0x00000000 20945
6148914689.574243 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.574243 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.574243 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.574243 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.578250 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.578250 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.578250 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.578250 AppleJPEG 0x0000000182a9eb54 [0x14c8a8e00] Releasing session
6148914689.650289 AppleJPEG 0x0000000182a9e338 [0x14c8a8e00] Created session
6148914689.650289 AppleJPEG 0x0000000182a9eb54 [0x14d0f9c00] Releasing session
6148914689.651874 AppleJPEG 0x0000000182a9e338 [0x14d0f9c00] Created session
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x0000000180fc14bc mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000180fc1338 mach_msg + 72
2 CoreFoundation 0x00000001813f0ac0 __CFRunLoopServiceMachPort + 196
3 CoreFoundation 0x00000001813ee7c4 __CFRunLoopRun + 1032
4 CoreFoundation 0x000000018131d680 CFRunLoopRunSpecific + 384
5 GraphicsServices 0x000000018282c088 GSEventRunModal + 180
6 UIKit 0x0000000186194d90 UIApplicationMain + 204
7 Control 0x00000001000e9e48 0x1000d0000 + 106056
8 libdyld.dylib 0x0000000180ebe8b8 start + 4
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x0000000180fdd4fc kevent_qos + 8
1 libdispatch.dylib 0x0000000180ea094c _dispatch_mgr_invoke + 232
2 libdispatch.dylib 0x0000000180e8f7bc _dispatch_source_invoke + 0
Thread 2:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 3:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 4:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 5:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 6:
0 libsystem_kernel.dylib 0x0000000180fdcb6c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x00000001810a1530 _pthread_wqthread + 1284
2 libsystem_pthread.dylib 0x00000001810a1020 start_wqthread + 4
Thread 7 name: Dispatch queue: com.apple.scenekit.renderingQueue.GameView0x14c65dd30
Thread 7 Crashed:
0 libdispatch.dylib 0x0000000180e90090 dispatch_semaphore_signal + 4
1 Jet 0x000000018eb21f80 jet_context::clear_fenced_buffers(std::__1::shared_ptr<jet_fence>) + 100
2 Jet 0x000000018eb2d834 jet_context_Metal::create_fence() + 168
3 Jet 0x000000018eb2d6c4 jet_context_Metal::commit() + 36
4 Jet 0x000000018eb2bf50 jet_context_Metal::begin_render_pass(jet_framebuffer*) + 156
5 Jet 0x000000018eb1fdc0 jet_context::execute_command_buffer(jet_command_buffer*) + 1528
6 Jet 0x000000018eb200f0 jet_context::submit_command_buffer_impl(jet_command_buffer*) + 56
7 SpriteKit 0x000000018ed16764 SKCRenderer::flushRenderOps() + 272
8 SpriteKit 0x000000018ed1883c SKCRenderer::render(SKCNode*, float vector[4], std::__1::shared_ptr<jet_framebuffer> const&, unsigned int vector[4], matrix_float4x4, bool, NSDictionary*, SKCStats*, SKCStats*) + 1740
9 SpriteKit 0x000000018ec83e74 -[SKSCNRenderer renderWithEncoder:pass:commandQueue:] + 520
10 SceneKit 0x000000018f825c08 -[SCNRenderer _drawOverlaySceneAtTime:] + 316
11 SceneKit 0x000000018f88403c __C3DEngineContextRenderPassInstance + 628
12 SceneKit 0x000000018f885020 C3DEngineContextRenderMainTechnique + 1352
13 SceneKit 0x000000018f824d28 -[SCNRenderer _renderScene:sceneTime:] + 364
14 SceneKit 0x000000018f824e78 -[SCNRenderer _drawSceneWithNewRenderer:] + 264
15 SceneKit 0x000000018f825378 -[SCNRenderer _drawScene:] + 84
16 SceneKit 0x000000018f82567c -[SCNRenderer _draw] + 636
17 SceneKit 0x000000018f87ea6c -[SCNView _drawAtTime:] + 464
18 SceneKit 0x000000018f8553a8 __49-[SCNDisplayLink _callbackWithTime:andDeltaTime:]_block_invoke + 96
19 libdispatch.dylib 0x0000000180e8d630 _dispatch_call_block_and_release + 24
20 libdispatch.dylib 0x0000000180e8d5f0 _dispatch_client_callout + 16
21 libdispatch.dylib 0x0000000180e99634 _dispatch_queue_drain + 864
22 libdispatch.dylib 0x0000000180e910f4 _dispatch_queue_invoke + 464
23 libdispatch.dylib 0x0000000180e9b504 _dispatch_root_queue_drain + 728
24 libdispatch.dylib 0x0000000180e9daa8 _dispatch_worker_thread + 124
25 libsystem_pthread.dylib 0x00000001810a3b28 _pthread_body + 156
26 libsystem_pthread.dylib 0x00000001810a3a8c _pthread_body + 0
27 libsystem_pthread.dylib 0x00000001810a1028 thread_start + 4
Thread 7 crashed with ARM Thread State (64-bit):
x0: 0x0000000100012100 x1: 0x000000016e35e300 x2: 0x0000000000000002 x3: 0x000000014c685660
x4: 0x0000000000000001 x5: 0x0000000000000000 x6: 0x0000000180a9d974 x7: 0x0000000000000000
x8: 0x000000014c662200 x9: 0x0000008a00012000 x10: 0x0000000100012140 x11: 0x0000000000000000
x12: 0x0000000000049410 x13: 0x0000000000049410 x14: 0x00000000ffffffff x15: 0x00000000ffffffec
x16: 0x0000000180e9008c x17: 0x000000018edbd848 x18: 0x0000000000000000 x19: 0x000000014c6aeb60
x20: 0x000000016e35e300 x21: 0x000000014c6d0ea0 x22: 0x000000014c684ba0 x23: 0x000000014c65a080
x24: 0x000000014c6f6fc0 x25: 0x000000014c685660 x26: 0x00000000000003c0 x27: 0x0000000000000280
x28: 0x000000014d908df0 fp: 0x000000016e35e2f0 lr: 0x000000018eb21f80
sp: 0x000000016e35e2c0 pc: 0x0000000180e90090 cpsr: 0x00000000
崩溃发生在渲染器中。我想知道你是否在为 Metal 中的一个错误发痒?这是现在的默认渲染器,但它是 iOS 8 SDK 中的 OpenGL。
看看SCNView
SCNPreferredRenderingAPI
:
SceneKit attempts to initialize a view using the preferred API you specify in the initWithFrame:options: initializer; if the current device does not support the preferred API, SceneKit automatically falls back to a supported API. After initialization, use the renderingAPI property to find out whether a fallback occurred. For example, if you specify the SCNRenderingAPIMetal option when initializing a view on an iOS device that does not support Metal, SceneKit defaults to the SCNRenderingAPIOpenGLES2 option instead.
不过,由于您的目标是 iOS 8,因此您不能使用 属性。但是你可以set the preferred renderer using your Info.plist。试试看行为是否改变。
这似乎源于 9.2 中与 SpriteKit 粒子发射器相关的已知错误。删除节点或降低出生率已停止崩溃。