【问题标题】:iOS crasher: CFNetwork HTTPReadFilter::doPlainRead(StreamReader*, unsigned char*, long, CFStreamError*, unsigned char*)iOS 崩溃:CFNetwork HTTPReadFilter::doPlainRead(StreamReader*, unsigned char*, long, CFStreamError*, unsigned char*)
【发布时间】:2014-12-01 17:04:02
【问题描述】:

我有这个崩溃程序,它在我们的生产应用程序中经常发生,但我们无法重现它。它只发生在使用 iOS8 SDK 的 iOS8 上。

HTTPReadFilter::doPlainRead(StreamReader*, unsigned char*, long, CFStreamError*, unsigned char*) inside CFNetwork. Crashed: com.apple.NSURLConnectionLoader EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x00000000

StackTrace:

        libsystem_platform.dylib    
    _platform_memmove + 185

    CFNetwork   
    HTTPReadFilter::doPlainRead(StreamReader*, unsigned char*, long, CFStreamError*, unsigned char*) + 178

    CFNetwork   
    HTTPReadFilter::_streamImpl_Read(unsigned char*, long, CFStreamError*, unsigned char*) + 394

    CFNetwork   
    CoreStreamBase::_streamInterface_Read(unsigned char*, long) + 98

    CFNetwork   
    HTTPNetStreamInfo::_streamImpl_Read(__CFReadStream*, unsigned char*, long, CFStreamError*, unsigned char*) + 306

    CFNetwork   
    CFNetworkReadStream::httpStreamRead(__CFReadStream*, unsigned char*, long, CFStreamError*, unsigned char*, void*) + 44

    CoreFoundation  
    CFReadStreamRead + 328

    CFNetwork   
    HTTPNetStreamInfo::_readStreamClientCallBack(__CFReadStream*, unsigned long) + 128

    CFNetwork   
    CFNetworkReadStream::_readStreamClientCallBackCallBack(__CFReadStream*, unsigned long, void*) + 38

    CoreFoundation  
    _signalEventSync + 146

    CoreFoundation  
    _cfstream_shared_signalEventSync + 342
        CoreFoundation  
    __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
        CoreFoundation  
    CFRunLoopRunInMode + 106

    CFNetwork   
    +[NSURLConnection(Loader) _resourceLoadLoop:] + 486
        Foundation  
    __NSThread__main__ + 1118
        libsystem_pthread.dylib 
    _pthread_start + 118

非常感谢任何帮助!

【问题讨论】:

  • 也看到了这个。您是在所有 arch 上还是仅在 arm64 上看到这个?
  • 你能给我们更多的背景信息吗,你使用SDWebImage是偶然的吗?
  • 不使用 SDWebImage,但我正在调用网络服务来更新我的产品图像。 [NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&err]; 是我在 for 循环内的 blockOperation 中运行的行。它仅在 iOS-8 上发生,并且每隔几分钟就会发生一次。不知何故,req 对象正在给 EXC_BAD_ACC。 @RyanRomanchuk 你能找到你的问题吗?
  • 你有没有机会使用谷歌分析?
  • @RyanRomanchuk 是的,我们使用的是 Google Analytics v3.03C。

标签: ios ios8


【解决方案1】:

这似乎真的是一个 iOS 8 错误。尽量不要为你的 NSURLCache 设置自定义大小。检查这个https://devforums.apple.com/message/1102182#1102182

【讨论】:

  • 感谢您提供此链接 Raphael。我没有自定义 NSURLCache 的大小。我只是这样做 [[NSURLCache sharedURLCache] removeAllCachedResponses];当应用程序启动然后在一个网络服务调用中我正在执行此操作 [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];你知道这是否也会影响这次 CFNetwork 崩溃?我这样做是因为有时应用程序不会清除缓存并且不会查看服务器响应。
  • 我不知道你提到的代码是否也导致了崩溃。我还没有在 AppStore 上更新我的版本,删除了 NSURLCache 的自定义大小。我会在这里发布结果。
  • 只是声明,不为 NSURLCache 设置自定义大小确实解决了这个问题。这是针对 Apple 错误的解决方法。
  • 谢谢拉斐尔。我将尝试避免使用 [NSURLCache removeAllCachedResponses],看看它是否对我们有任何帮助。
  • 我们使用了不同的库来下载图像,从而摆脱了 CFNetwork 崩溃程序。谢谢拉斐尔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多