【问题标题】:0_ os_lock_corruption_abort in NSURLProtocol0_ NSURLProtocol 中的 os_lock_corruption_abort
【发布时间】:2016-05-07 16:45:38
【问题描述】:

我已经构建了一个自定义的 NSURLProtocol,它在浏览时被 WebView 使用。但是在看似随机的时间(在浏览 20 秒或几分钟之间)我收到了一个 EXC_BREAKPOINT 并且应用程序停止在我的 NSURLProtocol 中运行。

我的 NSURLProtocol 的相关部分如下,它是显示 EXC_BREAKPOINT 的最后一行

self.mutableData = NSMutableData(data: data!)  
self.response = response  
self.client?.URLProtocol(self, didReceiveResponse: response!, cacheStoragePolicy: NSURLCacheStoragePolicy.Allowed)  
self.client?.URLProtocol(self, didLoadData: data!)  
self.client?.URLProtocolDidFinishLoading(self)

Xcode 错误如下所示:

我完全被这个迷住了。有谁知道这可能是什么原因造成的,以及如何解决?

谢谢!

山姆

【问题讨论】:

  • 在生产中遇到同样的崩溃,尽管我认为我们从未在本地看到过这种情况。对此也感到困惑。
  • @Sam Heather 您是否设法找到了解决方案。我也面临同样的问题。
  • @Gyanendra 还是没有解决办法,很抱歉

标签: ios nsurlsession nsurlprotocol


【解决方案1】:

没有足够的上下文让我完全理解这里的代码,更不用说猜测出了什么问题,但基本上发生的事情是有一个锁(互斥锁)已被释放,但仍在 NSURL 中的某个地方使用*堆栈。

这可能表明某些内容未正确保留,但任何人都可以猜测是什么或在哪里。甚至可能是您的协议没有正确保留,在这种情况下,您可以通过将协议对象分配给自身的属性来修复它,直到您调用最后一个委托方法,然后将其清空。

话虽如此,我们有理由相信这是操作系统本身的一个错误,因此当您尝试解决它时,您还应该提交一个错误。它会被其他十几个在这里和苹果开发者论坛上问过同样问题的人所欺骗。 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多