随着iOS 9的发布,我们看到了几个崩溃报告,这些报告似乎是Apple在iOS 9中出现的一个错误。这种情况发生在各种设备类型(iPhone,iPad和iPod)上。我想找出为什么会发生这种情况,如果有什么我可以做的解决它。我们的崩溃报告系统(Crashlytics)正在报告这个堆栈,所以不幸的是我没有可重现的步骤或代码,但我会尽力回答任何问题。堆栈如下:
Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x34a27ad6 objc_msgSend + 21
1 CoreFoundation 0x230d3db9 -[__NSArrayM dealloc] + 148
2 libobjc.A.dylib 0x34a34f67 objc_object::sidetable_release(bool) + 150
3 libobjc.A.dylib 0x34a353a9 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 388
4 CoreFoundation 0x230cbfa9 _CFAutoreleasePoolPop + 16
5 UIKit 0x27523cd9 _prepareForCAFlush + 312
6 UIKit 0x2752886b _beforeCACommitHandler + 10
7 CoreFoundation 0x2317a509 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 20
8 CoreFoundation 0x2317880d __CFRunLoopDoObservers + 280
9 CoreFoundation 0x23178c3f __CFRunLoopRun + 958
10 CoreFoundation 0x230cc249 CFRunLoopRunSpecific + 520
11 CoreFoundation 0x230cc035 CFRunLoopRunInMode + 108
12 GraphicsServices 0x2c182ad1 GSEventRunModal + 160
13 UIKit 0x272e18a9 UIApplicationMain + 144
14 APPNAMEHERE 0x000ec967 main (main.m:14)
答案 0 :(得分:2)
对我来说,问题是当应用程序最小化时我正在显示和解除键盘。
SET foreign_key_checks = 0;
我在applicationWillResignActive事件上执行了上述代码。 删除此代码修复了崩溃。
答案 1 :(得分:1)
我们遇到了类似堆栈跟踪的崩溃,经过长时间的调查,我们发现它与其他崩溃有关;修复也解决了这个问题,但是我仍然不确定这两起崩溃是如何相关的。
以下是其他崩溃的详细信息:
我们在一个方法中有一个函数调用,比如
AudioServicesAddSystemSoundCompletion(self.soundID,
[[NSRunLoop currentRunLoop] getCFRunLoop],
kCFRunLoopDefaultMode,
AudioServicesSystemSoundCompletion,
(void *)CFBridgingRetain(self));
AudioServicesSystemSoundCompletion看起来像
void AudioServicesSystemSoundCompletion(SystemSoundID ssID, void *clientData) {
AudioServicesRemoveSystemSoundCompletion(ssID);
CFRelease(clientData);
}
同时执行该函数调用两次或多次导致应用程序崩溃。我们通过传递NULL而不是(void *)CFBridgingRetain(self)并删除CFRelease(clientData)来修复此问题。线。
自此修复以来,我们再也看不到“_prepareForCAFlush”崩溃了。
另请注意,根据Crashlytics的说法,每次崩溃时设备的内存使用量都非常高。
希望这有帮助!
答案 2 :(得分:1)
我也面临这个问题,我认为我找到了可能导致它的原因。 你们有没有机会使用SDWebImage? 因为那是我发现CFRunLoopRun()被调用的唯一地方,而且其他人抱怨: Dead thread ticket -> App Crash
答案 3 :(得分:-4)
似乎只影响具有32位处理器A5和A6的设备 - iPod 5th Gen,iPhone 4S / 5 / 5C,iPad 2 / Mini)。 在我们这边也没有责备。 随着iOS 9的发布和采用,这些崩溃开始并逐渐增加。 iOS v9.0.1似乎无法修复它。