应用程序启动时偶尔崩溃

Posted

技术标签:

【中文标题】应用程序启动时偶尔崩溃【英文标题】:Ocassional crash on the app start 【发布时间】:2016-10-25 11:30:29 【问题描述】:

我在应用程序启动时遇到了非常奇怪的崩溃。我的应用产生了很多线程(超过 500 个,其中大多数与 PLPreheatItem 相关,我无法在此处粘贴完整的崩溃日志,因为 *** 限制为 30K 个符号)。

问题是我无法在我的设备上重现它。几乎每次运行时,我的客户都会在全新安装时发生这种情况。

我正在使用带有后台会话的 NSURLSession 和带有 4 个并发操作的 NSOperationQueue。这些是我认为最薄弱的部分。

有人可以建议我需要在哪里挖掘。因为我真的不知道该怎么办。

谢谢。

Incident Identifier: 3808D96D-CAA3-4DC3-9278-B1DF7CEFEF9D
CrashReporter Key:   0f11c86163cc36bdb756e72a5b65b3db93ad673d
Hardware Model:      iPhone8,1
Process:             ******** [1991]
Path:                /private/var/containers/Bundle/Application/87DD6538-DE78-4B6A-9834-58FF8C2AE22F/********.app/********
Identifier:          ********
Version:             75 (1.1.8)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2016-10-24 15:21:42.42 +0200
Launch Time:         2016-10-24 15:21:37.37 +0200
OS Version:          ios 9.3.5 (13G36)
Report Version:      105

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000018171e7c4
Triggered by Thread:  40

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   libsystem_kernel.dylib          0x0000000181608fd8 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x0000000181608e54 mach_msg + 72
2   CoreFoundation                  0x0000000181a40c60 __CFRunLoopServiceMachPort + 196
3   CoreFoundation                  0x0000000181a3e964 __CFRunLoopRun + 1032
4   CoreFoundation                  0x0000000181968c50 CFRunLoopRunSpecific + 384
5   GraphicsServices                0x0000000183250088 GSEventRunModal + 180
6   UIKit                           0x0000000186c56088 UIApplicationMain + 204
7   MyApp                           0x00000001000e1430 main (main.m:14)
8   libdyld.dylib                   0x00000001815068b8 start + 4

Thread 1 name:  Dispatch queue: PLPreheatItem
Thread 1:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x0000000181608fd8 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x0000000181608e54 mach_msg + 72
2   libdispatch.dylib               0x00000001814e91dc _dispatch_mach_msg_send + 1716
3   libdispatch.dylib               0x00000001814e94d8 _dispatch_mach_send_drain + 236
4   libdispatch.dylib               0x00000001814e8968 _dispatch_mach_notify_merge + 308
5   libdispatch.dylib               0x00000001814da204 _dispatch_mach_notify_send_possible + 28
6   libdispatch.dylib               0x00000001814d5fec _Xmach_notify_send_possible + 52
7   libdispatch.dylib               0x00000001814d5adc libdispatch_internal_protocol_server + 104
8   libdispatch.dylib               0x00000001814ecfdc _dispatch_mach_notify_source_invoke + 28
9   libdispatch.dylib               0x00000001814edd48 _dispatch_kevent_mach_msg_recv + 280
10  libdispatch.dylib               0x00000001814e8730 _dispatch_mgr_invoke + 64
11  libdispatch.dylib               0x00000001814d7648 _dispatch_source_invoke + 0

Thread 3 name:  Dispatch queue: PLPreheatItem
Thread 3:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 4 name:  Dispatch queue: PLPreheatItem
Thread 4:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 5 name:  WebThread
Thread 5:
0   libsystem_kernel.dylib          0x0000000181608fd8 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x0000000181608e54 mach_msg + 72
2   CoreFoundation                  0x0000000181a40c60 __CFRunLoopServiceMachPort + 196
3   CoreFoundation                  0x0000000181a3e964 __CFRunLoopRun + 1032
4   CoreFoundation                  0x0000000181968c50 CFRunLoopRunSpecific + 384
5   WebCore                         0x000000018595a108 RunWebThread(void*) + 456
6   libsystem_pthread.dylib         0x00000001816efb28 _pthread_body + 156
7   libsystem_pthread.dylib         0x00000001816efa8c _pthread_body + 0
8   libsystem_pthread.dylib         0x00000001816ed028 thread_start + 4

Thread 6:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4
Thread 8:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 9 name:  com.apple.NSURLConnectionLoader
Thread 9:
0   libsystem_kernel.dylib          0x0000000181608fd8 mach_msg_trap + 8
1   libsystem_kernel.dylib          0x0000000181608e54 mach_msg + 72
2   CoreFoundation                  0x0000000181a40c60 __CFRunLoopServiceMachPort + 196
3   CoreFoundation                  0x0000000181a3e964 __CFRunLoopRun + 1032
4   CoreFoundation                  0x0000000181968c50 CFRunLoopRunSpecific + 384
5   CFNetwork                       0x00000001820e9bcc +[NSURLConnection(Loader) _resourceLoadLoop:] + 412
6   Foundation                      0x000000018245fe4c __NSThread__start__ + 1000
7   libsystem_pthread.dylib         0x00000001816efb28 _pthread_body + 156
8   libsystem_pthread.dylib         0x00000001816efa8c _pthread_body + 0
9   libsystem_pthread.dylib         0x00000001816ed028 thread_start + 4

Thread 10 name:  com.apple.CFSocket.private
Thread 10:
0   libsystem_kernel.dylib          0x0000000181624344 __select + 8
1   CoreFoundation                  0x0000000181a471c8 __CFSocketManager + 648
2   libsystem_pthread.dylib         0x00000001816efb28 _pthread_body + 156
3   libsystem_pthread.dylib         0x00000001816efa8c _pthread_body + 0
4   libsystem_pthread.dylib         0x00000001816ed028 thread_start + 4

Thread 11:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 12 name:  Dispatch queue: PLPreheatItem
Thread 12:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 13 name:  Dispatch queue: PLPreheatItem
Thread 13:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 14:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 15 name:  Dispatch queue: PLPreheatItem
Thread 15:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 16:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 17:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 18:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 19:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 20:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 21 name:  Dispatch queue: PLPreheatItem
Thread 21:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 22:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 23 name:  Dispatch queue: PLPreheatItem
Thread 23:
0   libsystem_kernel.dylib          0x0000000181623f6c __psynch_mutexwait + 8
1   libsystem_pthread.dylib         0x00000001816f239c _pthread_mutex_lock_wait + 96
2   libsystem_pthread.dylib         0x00000001816f257c _pthread_mutex_lock_slow + 296
3   libsystem_c.dylib               0x000000018153b77c vfprintf_l + 36
4   libsystem_c.dylib               0x000000018153b748 fprintf + 76
5   libsystem_c.dylib               0x00000001815411ec nanosleep + 148
6   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
7   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
8   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
9   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
10  libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
11  AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
12  PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
13  AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
14  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
15  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
16  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
17  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
18  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
19  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
20  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
21  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 24:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4
Thread 36 name:  Dispatch queue: PLPreheatItem
Thread 36:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 37 name:  Dispatch queue: PLPreheatItem
Thread 37:
0   libsystem_kernel.dylib          0x000000018162441c __semwait_signal + 8
1   libsystem_c.dylib               0x000000018154122c nanosleep + 212
2   libsystem_c.dylib               0x00000001815aa0b8 sleep + 44
3   libxpc.dylib                    0x0000000181733ca8 _waiting4memory + 16
4   libxpc.dylib                    0x000000018171f6d4 _xpc_mach_port_allocate + 92
5   libxpc.dylib                    0x000000018171f62c _xpc_connection_setup_reply_port + 40
6   libxpc.dylib                    0x000000018171f5ac xpc_connection_send_message_with_reply + 108
7   AssetsLibraryServices           0x000000018a6f2e18 -[PLGatekeeperClient cancelCPLDownloadImageDataWithVirtualTaskIdentifiers:completionHandler:] + 332
8   PhotoLibraryServices            0x000000018af023d0 __59-[PLPreheatItem cancelPreheatRequestWithCompletionHandler:]_block_invoke + 252
9   AssetsLibraryServices           0x000000018a6ec508 __pl_dispatch_async_block_invoke + 36
10  libdispatch.dylib               0x00000001814d54bc _dispatch_call_block_and_release + 24
11  libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
12  libdispatch.dylib               0x00000001814e14c0 _dispatch_queue_drain + 864
13  libdispatch.dylib               0x00000001814d8f80 _dispatch_queue_invoke + 464
14  libdispatch.dylib               0x00000001814e3390 _dispatch_root_queue_drain + 728
15  libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
16  libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
17  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 38:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 39:
0   libsystem_kernel.dylib          0x0000000181624b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x00000001816ed530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Thread 40 name:  Kernel bug: The kernel cannot allocate memory needed for the ps  Dispatch queue: com.apple.root.default-qos
Thread 40 Crashed:
0   libxpc.dylib                    0x000000018171e7c4 _xpc_connection_mach_event + 776
1   libxpc.dylib                    0x000000018171e7c4 _xpc_connection_mach_event + 776
2   libdispatch.dylib               0x00000001814d5578 _dispatch_client_callout4 + 16
3   libdispatch.dylib               0x00000001814d9864 _dispatch_mach_msg_invoke + 656
4   libdispatch.dylib               0x00000001814e1694 _dispatch_queue_drain + 1332
5   libdispatch.dylib               0x00000001814d8978 _dispatch_mach_invoke + 600
6   libdispatch.dylib               0x00000001814d547c _dispatch_client_callout + 16
7   libdispatch.dylib               0x00000001814e3914 _dispatch_root_queue_drain + 2140
8   libdispatch.dylib               0x00000001814e30b0 _dispatch_worker_thread3 + 112
9   libsystem_pthread.dylib         0x00000001816ed470 _pthread_wqthread + 1092
10  libsystem_pthread.dylib         0x00000001816ed020 start_wqthread + 4

Activity ID:             0x0000000000156343
Activity Name:           starting resolver activity
Activity Image Path:     /usr/lib/system/libsystem_network.dylib
Activity Image UUID:     A8E4200A-ECC7-3E56-A845-8A0E9CB4A6F0
Activity Offset:         0x0003333c
Activity Running Time:   5.357751 sec

【问题讨论】:

【参考方案1】:

错误消息被截断。显然是“内核无法分配伪接收所需的内存。”

您可能遇到了设备可以同时处理的最大线程数。 500 个线程转换为大约半 GB 的 RAM,仅用于应用程序的线程堆栈,甚至在您构建堆或为屏幕分配后备存储之前。在具有 512 MB RAM 的设备(iPhone 4S 及更低版本、iPod Touch 第 5 代及更低版本、iPad 2 及更早版本、iPad Mini 第 1 代及更早版本)上,无需祈祷它会工作。即使在较新的设备上,这也是可怕的滥用行为。

看起来这是由您使用 Apple 的照片框架执行的操作触发的。如果你正在做一些涉及查看大量图片或其他东西的元数据的事情,你应该添加延迟或其他东西来限制你这样做的速度。除此之外,除了在 bugreport.apple.com 上提交错误报告并希望获得最好的结果之外,您可能无能为力。

【讨论】:

【参考方案2】:

好的,看来问题已经解决了。

在应用程序开始时,我创建了PHCachingImageManager 并调用了startCachingImagesForAssets:targetSize:contentMode:options:。我正在为用户拥有的所有 iCloud 资产执行此操作,因此如果您有很多资产要缓存,请小心立即开始缓存所有资产。

结果PHCachingImageManager在串行队列中分别为每个资产生成了数十个线程。 (我的客户超过 500 个)。所以应用程序最终内存不足。

这是人们为此做的解决方法:How to use PHCachingImageManager

【讨论】:

以上是关于应用程序启动时偶尔崩溃的主要内容,如果未能解决你的问题,请参考以下文章

没有崩溃日志的应用程序失败

在多人连接中邀请对等方时偶尔崩溃

BadParcelable 异常偶尔会导致应用程序崩溃

CView::OnFilePrint 崩溃 MFC 应用程序

GDI+ 和多线程

WinCE 系统刚启动时运行应用,在应用启动时偶尔出现异常