mmapFileDeallocate崩溃

时间:2014-04-08 18:21:36

标签: ios objective-c ios7 cfnetwork

我正在处理的应用程序遇到了一个我无法重现的非常奇怪的崩溃,我所知道的唯一信息来自Crashlytics。它只发生在ios7和谷歌搜索mmapFileDeallocate返回一个网站,其他人遇到相同的崩溃,但他们的问题消失了os更新。

这是堆栈:

Thread : Crashed: tcpConnWorkQueue
0  libobjc.A.dylib                0x3aa00b36 objc_msgSend + 21
1  CFNetwork                      0x2fece4c3 __CFURLCache::removeMMappedDataFromSet(void*) + 34
2  CFNetwork                      0x2fecfa45 mmapFileDeallocate(void*, void*) + 24
3  CoreFoundation                 0x3024ef5f __CFDataDeallocate + 30
4  CoreFoundation                 0x301c75f7 CFRelease + 462
5  CoreFoundation                 0x3023fed5 __CFArrayReleaseValues + 292
6  CoreFoundation                 0x301c75f7 CFRelease + 462
7  CFNetwork                      0x2fe5f1d5 __CFCachedURLResponse::~__CFCachedURLResponse() + 40
8  CFNetwork                      0x2fe5f19f __CFCachedURLResponse::~__CFCachedURLResponse() + 10
9  CoreFoundation                 0x301c75f7 CFRelease + 462
10 CFNetwork                      0x2feaeda1 HTTPProtocol::~HTTPProtocol() + 732
11 CoreFoundation                 0x301c75f7 CFRelease + 462
12 CoreFoundation                 0x302b10f0 __CFBasicHashDrain + 332
13 CoreFoundation                 0x301c75f7 CFRelease + 462
14 CFNetwork                      0x2fe9226b SocketStream::~SocketStream() + 406
15 CFNetwork                      0x2fe920c5 SocketStream::~SocketStream() + 20
16 CoreFoundation                 0x301c75f7 CFRelease + 462
17 libdispatch.dylib              0x3aee8d1b _dispatch_call_block_and_release + 10
18 libdispatch.dylib              0x3aeef273 _dispatch_queue_drain$VARIANT$mp + 374
19 libdispatch.dylib              0x3aeef06b _dispatch_queue_invoke$VARIANT$mp + 42
20 libdispatch.dylib              0x3aeefce1 _dispatch_root_queue_drain + 76
21 libdispatch.dylib              0x3aeeff59 _dispatch_worker_thread2 + 56
22 libsystem_pthread.dylib        0x3b02adbf _pthread_wqthread + 298

我可以在崩溃时发布其他主题,但唯一一个突出我的是AFNetworking,但我在他们的问题上找不到类似的东西。

2 个答案:

答案 0 :(得分:7)

我们也看到这个报告给了崩解剂,目前只发生在iOS 7设备上。当它发生时,我们也有一个AFNetworking线程。

从这个SO thread,我们发现将缓存设置为零似乎可以消除崩溃,但这不是一个永久的解决方案。

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0
                                                        diskCapacity:0
                                                            diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];

我们有一些其他的NSURLCache代码,我们认为我们目前正在测试,我会及时通知您。

<强>更新

我们似乎已经解决了这个问题。我们认为解决崩溃的代码是代码,当代码的另一部分正在使用它时,它会破坏[NSURLCache sharedURLCache]。我们删除了修改[NSURLCache sharedURLCache]的所有调用。

答案 1 :(得分:0)

我刚刚遇到了同样的崩溃。在我们设置更大的共享缓存之前,似乎我们正在使用缓存。应用程序启动后立即设置缓存修复了问题。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:kNSURLCacheInMemorySize
                                                         diskCapacity:kNSURLCacheFileStorageSize
                                                             diskPath:nil];
    [NSURLCache setSharedURLCache:URLCache];