我在App Store中有一个有很多崩溃的应用程序,但我无法自己重现它。 我有很多崩溃日志,但它们不包含回溯,因此难以诊断问题。
崩溃日志显示CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER,这可能是由于根据SO上的其他问题将通知发送给解除分配的观察者而引起的。 然而,该应用程序仅在iOS 10+上运行,并且根据Apple的说法,除非他们是块观察者,否则没有必要从iOS 9开始取消注册观察者。我的应用程序没有使用,因此就我自己的应用程序通知而言,这不是原因。
Incident Identifier: 77AB1312-9C1F-4BC1-957E-B742856DC635
CrashReporter Key: 6ad59ac64c53d2fc92208e8df23d4ddc8fed39fd
Hardware Model: iPhone10,3
Process: My App [378]
Path: /private/var/containers/Bundle/Application/99C2E2C8-9655-4D07-9608-870B5DD17C21/My app.app/My app
Identifier: com.myapp
OS Version: iPhone OS 10.3.2 (14F89)
Code Type: ARM-64 (Native)
Role: Foreground
Parent Process: launchd [1]
Coalition: com.myapp[498]
Date/Time: 2018-06-06 00:18:34.2085 -0700
Launch Time: 2018-06-06 00:17:39.1406 -0700
Baseband Version: 2.03.00
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x000000018ec4d014 __pthread_kill + 8
1 libsystem_pthread.dylib 0x000000018ed17264 pthread_kill + 112 (pthread.c:1366)
2 libsystem_c.dylib 0x000000018ebc19c4 abort + 140 (abort.c:91)
3 libswiftCore.dylib 0x0000000100ad976c 0x1007ec000 + 3069804
4 libswiftCore.dylib 0x0000000100b0614c 0x1007ec000 + 3252556
5 CoreFoundation 0x000000018fc56f54 ___forwarding___ + 916 (NSForwarding.m:3126)
6 CoreFoundation 0x000000018fb52d4c _CF_forwarding_prep_0 + 92
7 CoreFoundation 0x000000018fbed5f4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 20 (CFNotificationCenter.c:650)
8 CoreFoundation 0x000000018fbecd08 _CFXRegistrationPost + 400 (CFNotificationCenter.c:164)
9 CoreFoundation 0x000000018fbeca84 ___CFXNotificationPost_block_invoke + 60 (CFNotificationCenter.c:1031)
10 CoreFoundation 0x000000018fc5b7a8 -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1412 (CFXNotificationRegistrar.m:163)
11 CoreFoundation 0x000000018fb3095c _CFXNotificationPost + 376 (CFNotificationCenter.c:1028)
12 Foundation 0x0000000190642930 -[NSNotificationCenter postNotificationName:object:userInfo:] + 68 (NSNotification.m:482)
13 UIKit 0x0000000195e07ea8 -[UIApplication _stopDeactivatingForReason:] + 1124 (UIApplication.m:1534)
14 UIKit 0x0000000196005b4c __62-[UIApplication _sceneSettingsPostLifecycleEventDiffInspector]_block_invoke.1259 + 124 (UIApplication.m:3247)
15 FrontBoardServices 0x00000001917e4be8 __52-[FBSSettingsDiffInspector inspectDiff:withContext:]_block_invoke.27 + 204 (FBSSettingsDiffInspector.m:46)
16 Foundation 0x00000001906fc7fc __NSIndexSetEnumerate + 724 (NSIndexSet.m:1347)
17 BaseBoard 0x0000000191757510 -[BSSettingsDiff inspectChangesWithBlock:] + 104 (BSSettingsDiff.m:187)
18 FrontBoardServices 0x00000001917dece4 -[FBSSettingsDiff inspectOtherChangesWithBlock:] + 88 (FBSSettingsDiff.m:65)
19 FrontBoardServices 0x00000001917e49bc -[FBSSettingsDiffInspector inspectDiff:withContext:] + 280 (FBSSettingsDiffInspector.m:44)
20 UIKit 0x00000001960064d4 __70-[UIApplication scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke + 196 (UIApplication.m:3346)
21 UIKit 0x0000000196006124 -[UIApplication scene:didUpdateWithDiff:transitionContext:completion:] + 892 (UIApplication.m:3357)
22 UIKit 0x00000001963407c8 -[UIApplicationSceneClientAgent scene:handleEvent:withCompletion:] + 464 (UIApplicationSceneClientAgent.m:74)
23 FrontBoardServices 0x00000001917ce22c __80-[FBSSceneImpl updater:didUpdateSettings:withDiff:transitionContext:completion:]_block_invoke.376 + 208 (FBSSceneImpl.m:598)
24 FrontBoardServices 0x00000001917fb884 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 36 (FBSSerialQueue.m:158)
25 FrontBoardServices 0x00000001917fb6f0 -[FBSSerialQueue _performNext] + 176 (FBSSerialQueue.m:177)
26 FrontBoardServices 0x00000001917fbaa0 -[FBSSerialQueue _performNextFromRunLoopSource] + 56 (FBSSerialQueue.m:206)
27 CoreFoundation 0x000000018fc0142c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24 (CFRunLoop.c:1943)
28 CoreFoundation 0x000000018fc00d9c __CFRunLoopDoSources0 + 540 (CFRunLoop.c:1989)
29 CoreFoundation 0x000000018fbfe9a8 __CFRunLoopRun + 744 (CFRunLoop.c:2821)
30 CoreFoundation 0x000000018fb2eda4 CFRunLoopRunSpecific + 424 (CFRunLoop.c:3113)
31 GraphicsServices 0x0000000191598074 GSEventRunModal + 100 (GSEvent.c:2245)
32 UIKit 0x0000000195de9058 UIApplicationMain + 208 (UIApplication.m:4089)
33 My App 0x00000001000be2e4 main + 56 (MyFile.swift:17)
34 libdyld.dylib 0x000000018eb3d59c start + 4
hread 1:
0 libsystem_pthread.dylib 0x0000000220f92064 start_wqthread + 0
Thread 2 name:
Thread 2:
0 libsystem_kernel.dylib 0x0000000220ef6ac8 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000220ef6940 mach_msg + 72 (mach_msg.c:103)
2 CoreFoundation 0x000000022131d2f0 __CFRunLoopServiceMachPort + 236 (CFRunLoop.c:2615)
3 CoreFoundation 0x000000022131af80 __CFRunLoopRun + 1404 (CFRunLoop.c:2971)
4 CoreFoundation 0x0000000221254abc CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
5 Foundation 0x0000000221cd0544 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 300 (NSRunLoop.m:367)
6 Foundation 0x0000000221cd03f0 -[NSRunLoop(NSRunLoop) runUntilDate:] + 148 (NSRunLoop.m:411)
7 UIKitCore 0x000000024c433a7c -[UIEventFetcher threadMain] + 136 (UIEventFetcher.m:524)
8 Foundation 0x0000000221de0a94 __NSThread__start__ + 1040 (NSThread.m:1175)
9 libsystem_pthread.dylib 0x0000000220f931e4 _pthread_body + 128 (pthread.c:804)
10 libsystem_pthread.dylib 0x0000000220f93164 _pthread_start + 40 (pthread.c:827)
11 libsystem_pthread.dylib 0x0000000220f92070 thread_start + 4
Thread 3 name:
Thread 3:
0 libsystem_kernel.dylib 0x0000000220ef6ac8 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000220ef6940 mach_msg + 72 (mach_msg.c:103)
2 CoreFoundation 0x000000022131d2f0 __CFRunLoopServiceMachPort + 236 (CFRunLoop.c:2615)
3 CoreFoundation 0x000000022131af80 __CFRunLoopRun + 1404 (CFRunLoop.c:2971)
4 CoreFoundation 0x0000000221254abc CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
5 CFNetwork 0x0000000221b5fc8c -[__CoreSchedulingSetRunnable runForever] + 212 (CoreSchedulingSet.mm:1365)
6 Foundation 0x0000000221de0a94 __NSThread__start__ + 1040 (NSThread.m:1175)
7 libsystem_pthread.dylib 0x0000000220f931e4 _pthread_body + 128 (pthread.c:804)
8 libsystem_pthread.dylib 0x0000000220f93164 _pthread_start + 40 (pthread.c:827)
9 libsystem_pthread.dylib 0x0000000220f92070 thread_start + 4
Thread 4 name:
Thread 4:
0 libsystem_kernel.dylib 0x0000000220f184ac __psynch_cvwait + 8
1 libsystem_pthread.dylib 0x0000000220f9a638 _pthread_cond_wait$VARIANT$armv81 + 620 (pthread_cond.c:578)
2 libc++.1.dylib 0x00000002205b2e28 std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&) + 24 (__threading_support:278)
3 JavaScriptCore 0x0000000228f44524 void std::__1::condition_variable_any::wait<std::__1::unique_lock<bmalloc::Mutex> >(std::__1::unique_lock<bmalloc::Mutex>&) + 104 (condition_variable:204)
4 JavaScriptCore 0x0000000228f48300 bmalloc::Scavenger::threadRunLoop() + 172 (condition_variable:213)
5 JavaScriptCore 0x0000000228f47ac4 bmalloc::Scavenger::threadEntryPoint(bmalloc::Scavenger*) + 12 (Scavenger.cpp:352)
6 JavaScriptCore 0x0000000228f494b8 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*> >(void*) + 44 (type_traits:4428)
7 libsystem_pthread.dylib 0x0000000220f931e4 _pthread_body + 128 (pthread.c:804)
8 libsystem_pthread.dylib 0x0000000220f93164 _pthread_start + 40 (pthread.c:827)
9 libsystem_pthread.dylib 0x0000000220f92070 thread_start + 4
Thread 5 name:
Thread 5:
0 libsystem_kernel.dylib 0x0000000220efb088 kevent + 8
1 Realm 0x00000001025f112c realm::_impl::ExternalCommitHelper::listen() + 212 (external_commit_helper.cpp:202)
2 Realm 0x00000001025f1d20 std::__1::__async_func<realm::_impl::ExternalCommitHelper::ExternalCommitHelper(realm::_impl::RealmCoordinator&)::$_0>::operator()() + 28 (external_commit_helper.cpp:159)
3 Realm 0x00000001025f1ca8 std::__1::__async_assoc_state<void, std::__1::__async_func<realm::_impl::ExternalCommitHelper::ExternalCommitHelper(realm::_impl::RealmCoordinator&)::$_0> >::__execute() + 28 (future:1039)
4 Realm 0x00000001025f1e58 std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (std::__1::__async_assoc_state<void, std::__1::__async_func<realm::_impl::ExternalCommitHelper::ExternalCommitHelper(realm::_impl::RealmCoordinator&)::$_0> >::*)(), std::__1::__async_assoc_state<void, std::__1::__async_func<realm::_impl::ExternalCommitHelper::ExternalCommitHelper(realm::_impl::RealmCoordinator&)::$_0> >*> >(void*, void*) + 64 (type_traits:4232)
5 libsystem_pthread.dylib 0x0000000220f931e4 _pthread_body + 128 (pthread.c:804)
6 libsystem_pthread.dylib 0x0000000220f93164 _pthread_start + 40 (pthread.c:827)
7 libsystem_pthread.dylib 0x0000000220f92070 thread_start + 4
Thread 6 name:
Thread 6:
0 libsystem_kernel.dylib 0x0000000220ef6ac8 mach_msg_trap + 8
1 libsystem_kernel.dylib 0x0000000220ef6940 mach_msg + 72 (mach_msg.c:103)
2 CoreFoundation 0x000000022131d2f0 __CFRunLoopServiceMachPort + 236 (CFRunLoop.c:2615)
3 CoreFoundation 0x000000022131af80 __CFRunLoopRun + 1404 (CFRunLoop.c:2971)
4 CoreFoundation 0x0000000221254abc CFRunLoopRunSpecific + 436 (CFRunLoop.c:3247)
5 AVFAudio 0x0000000227a31cd0 GenericRunLoopThread::Entry(void*) + 164 (GenericRunLoopThread.h:92)
6 AVFAudio 0x0000000227a5ce94 CAPThread::Entry(CAPThread*) + 88
7 libsystem_pthread.dylib 0x0000000220f931e4 _pthread_body + 128 (pthread.c:804)
8 libsystem_pthread.dylib 0x0000000220f93164 _pthread_start + 40 (pthread.c:827)
9 libsystem_pthread.dylib 0x0000000220f92070 thread_start + 4
Thread 7:
0 libsystem_pthread.dylib 0x0000000220f92064 start_wqthread + 0
Thread 8:
0 libsystem_pthread.dylib 0x0000000220f92064 start_wqthread + 0
Thread 9:
0 libsystem_pthread.dylib 0x0000000220f92064 start_wqthread + 0
Thread 0 crashed with ARM Thread State (64-bit):
x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x0000000282a1a766
x4: 0x0000000103938280 x5: 0x0000000000000020 x6: 0x0046000004210103 x7: 0x00000000ffba0038
x8: 0x0000000000000800 x9: 0x0000000220f98b44 x10: 0x0000000220f9408c x11: 0x000000025b529562
x12: 0x000000025b529562 x13: 0x0000000000000018 x14: 0x0000000000000001 x15: 0x0000000000000881
x16: 0x0000000000000148 x17: 0x0000000000000000 x18: 0x0000000000000000 x19: 0x0000000000000006
x20: 0x0000000259099100 x21: 0x000000000000002d x22: 0x0000000000000303 x23: 0x00000002590991e0
x24: 0x0000000000000000 x25: 0x000000024d2a3912 x26: 0x0000000102eec200 x27: 0x000000025909cf10
x28: 0x0000000000000001 fp: 0x000000016ddd9960 lr: 0x0000000220f98c70
sp: 0x000000016ddd9930 pc: 0x0000000220f186a4 cpsr: 0x00000000
FYI MyFile.swift第17行就是这样:
@objc class RealmDatabase : NSObject
{
var configuration:Realm.Configuration? = nil // Line 17
这只是一个可选的声明,所以我不知道这可能会导致任何问题。
关于问题可能有什么其他线索吗?
答案 0 :(得分:1)
在黑暗中只是一个疯狂的刺:
发生此错误的一个原因是 ARC 和弱引用。
iOS中的常见模式是委托模式,其中构造单独的对象来处理另一个对象的消息。这些引用通常是弱,因此您不会获得内存循环,其中两个对象彼此拥有强引用。
现在,在您的代码中的某个位置,您可能会在某处生成RealmDatabase
实例,并将其作为弱引用传递给另一个对象。如果是这种情况,那么只要对它的所有强引用都消失,它就会被销毁:例如,如果它被某种类型的Realm连接实例引用,并且连接被删除。
这只是一个猜测,但如果您在某些事件发生时动态创建RealmDatabase
个实例,存储引用存储属性中的这些对象在一些对象上,作为一个可选项,以防止它们被ARC销毁。