网络扩展 IPC 中的奇怪崩溃

Strange crash in Network Extension IPC

有时,当我从 GUI 发送 IPC 消息时,我的 Packet Tunnel(网络扩展)会发生奇怪的崩溃:

Hardware Model:      iPad5,4
Process:             PacketTunnel [7893]
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2016-05-04 17:57:58.58 +0300
Launch Time:         2016-05-04 17:55:55.55 +0300
OS Version:          iOS 9.0.2 (13A452)
Report Version:      105

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000000000c0
Triggered by Thread:  0

Filtered syslog:
None found

Global Trace Buffer (reverse chronological seconds):
19.714507    libextension.dylib        0x00000001965c0dc8 tearing down context in extension due to invalidation



Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libobjc.A.dylib               0x0000000196d87890 lookUpImpOrForward + 80
1   libobjc.A.dylib               0x0000000196d91db8 _objc_msgSend_uncached_impcache + 56
2   libobjc.A.dylib               0x0000000196d91db8 _objc_msgSend_uncached_impcache + 56
3   NetworkExtension              0x0000000185552988 __70-[NEExtensionTunnelProviderContext establishIPCWithCompletionHandler:]_block_invoke + 104
4   NetworkExtension              0x000000018546b3ac -[NEIPC handleMessage:withHandler:] + 444
5   NetworkExtension              0x000000018546b68c __39-[NEIPC setupMessageHandlingWithQueue:]_block_invoke + 172
6   libxpc.dylib                  0x00000001977c130c _xpc_connection_call_event_handler + 68
7   libxpc.dylib                  0x00000001977bf0b4 _xpc_connection_mach_event + 2132
8   libdispatch.dylib             0x000000019756d86c _dispatch_client_callout4 + 16
9   libdispatch.dylib             0x0000000197571b58 _dispatch_mach_msg_invoke + 656
10  libdispatch.dylib             0x0000000197579930 _dispatch_queue_drain + 1332
11  libdispatch.dylib             0x0000000197570c6c _dispatch_mach_invoke + 600
12  libdispatch.dylib             0x00000001975728d8 _dispatch_main_queue_callback_4CF + 492
13  CoreFoundation                0x0000000182164258 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
14  CoreFoundation                0x00000001821620c0 __CFRunLoopRun + 1628
15  CoreFoundation                0x0000000182090dc0 CFRunLoopRunSpecific + 384
16  Foundation                    0x00000001830047ec -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
17  Foundation                    0x0000000183059e14 -[NSRunLoop(NSRunLoop) run] + 88
18  libxpc.dylib                  0x00000001977ccd3c _xpc_objc_main + 660
19  libxpc.dylib                  0x00000001977cea70 xpc_main + 200
20  Foundation                    0x00000001831d6494 service_connection_handler + 0
21  PlugInKit                     0x000000019003acd8 -[PKService run] + 544
22  PlugInKit                     0x000000019003a96c +[PKService main] + 56
23  PlugInKit                     0x000000019003acfc +[PKService _defaultRun:arguments:] + 20
24  libextension.dylib            0x00000001965d2058 NSExtensionMain + 64
25  libdyld.dylib                 0x000000019759e8b8 start + 4

看起来它正在尝试向已解除分配的对象发送消息。我知道这个答案需要网络扩展内部知识或源代码的知识,但也许 Apple 工程师正在阅读 SO...

我也发现这个问题与 Swift

一起使用
0   PacketTunnel-iOS                    0x000000010016b454 crashSignalHandler + 552
1   libsystem_platform.dylib            0x00000001806a193c _sigtramp + 52
2   libsystem_kernel.dylib              0x00000001805c0e54 mach_msg + 72
3   CoreFoundation                      0x00000001809f8c60 <redacted> + 196
4   CoreFoundation                      0x00000001809f6964 <redacted> + 1032
5   CoreFoundation                      0x0000000180920c50 CFRunLoopRunSpecific + 384
6   Foundation                          0x0000000181330cfc <redacted> + 308
7   Foundation                          0x0000000181386030 <redacted> + 88
8   libxpc.dylib                        0x00000001806e4c64 <redacted> + 660
9   libxpc.dylib                        0x00000001806e69dc xpc_main + 200
10  Foundation                          0x0000000181503d60 <redacted> + 0
11  PlugInKit                           0x0000000187d42c48 <redacted> + 544
12  PlugInKit                           0x0000000187d428dc <redacted> + 56
13  PlugInKit                           0x0000000187d42c6c <redacted> + 20
14  libextension.dylib                  0x0000000181316058 NSExtensionMain + 64
15  libdyld.dylib                       0x00000001804be8b8 <redacted> + 4

我与 DTS 进行了交谈,我们认为这是 iOS 9.0.2 中的错误,并已在 iOS 9.3.x 中修复。除了升级到 9.3.x.

,9.0.2 没有解决方法