【问题标题】:_Unwind_SjLj_Resume exception when deleting CoreData objects_Unwind_Resume 删除 Core Data 对象时出现异常
【发布时间】:2011-03-30 16:08:18
【问题描述】:

我不断遇到无法调试的崩溃。在删除核心数据对象后,它似乎偶尔会发生。我在不同的线程/上下文中删除并合并回主线程上的主上下文。这很少见,我无法始终如一地重现它,而且堆栈跟踪完全没用。这不像其他提到的 _Unwind_SjLj_Resume 那样是迁移问题。

通过谷歌搜索,_Unwind_SjLj_Resume 正在展开异常。所以我编造的故事是我因一些异常而崩溃,当异常解除时会发生此错误......关于如何继续的任何想法?

#0  0x33bd52d4 in __kill ()
#1  0x33bd52ca in kill ()
#2  0x33bd52bc in raise ()
#3  0x33be9d78 in abort ()
#4  0x33bd7986 in __assert_rtn ()
#5  0x32acab56 in _Unwind_SjLj_Resume ()
#6  0x33a47d56 in CFRunLoopRunSpecific ()
#7  0x33a47b8e in CFRunLoopRunInMode ()
#8  0x33b0e4aa in GSEventRunModal ()
#9  0x33b0e556 in GSEventRun ()
#10 0x32099328 in -[UIApplication _run] ()
#11 0x32096e92 in UIApplicationMain ()

【问题讨论】:

  • 你解决过这个问题吗?
  • 它现在一直在发生,但不确定是什么加重了它。

标签: iphone objective-c core-data gcc


【解决方案1】:

您可以查看this 发帖。我遇到了非常相似的事情,并且能够追踪到对已释放对象的引用(已经调用了 dealloc 的对象)的原因。与您的情况一样,我正在删除 NSManagedObjects。打开“停止 Objective-C 异常”让我可以捕获异常。

【讨论】:

  • 抱歉,我无法提供更多帮助。
【解决方案2】:

如果您正在执行多个线程,请确保您锁定了持久存储。

它应该看起来像这样:

[self.persistentStoreCoordinator lock];
NSManagedObjectContext *context = //your store;
[context save:&error];

if (error)
    // handle error

[self.persistentStoreCoordinator unlock];

【讨论】:

  • 这不是问题,持久存储将被上下文锁定。正如 Apple 所记录的那样,只需为每个线程使用单独的上下文就可以了。
  • @paulbailey 每个线程至少有一个上下文是可以的。但是我可以保证在使用多个上下文时您需要锁定您的商店。否则你会遇到间歇性崩溃。
  • 我不认为锁会有帮助。我可以尝试,但从文档中:“通常不需要对托管对象或托管对象上下文使用锁。但是,如果您使用由多个上下文共享的单个持久存储协调器并希望对其执行操作(对于例如,如果你想添加一个新的存储),或者如果你想在一个上下文中将多个操作聚合在一起,就像一个虚拟的单个事务一样,你应该锁定持久存储协调器。”
【解决方案3】:

原来这是由于我的 didSave 中的错误 - isDeleted。我正在使用非线程安全的 NSFileManager defaultManager 调度文件删除。在我的堆栈跟踪中没有任何迹象,但我通过在保存例程上逐步通过汇编程序来跟踪它,并注意到 runloop_handle_dispatch 函数是最后一个操作并从那里推导出来的。

谢谢你的帮助,Bleh!

【讨论】:

    【解决方案4】:

    对于将来研究此问题的任何人,我收到此异常,原因是我在 FetchedResltsController 中设置了缓存名称 - 缓存试图加载已从数据库中删除的行 - 可能应用程序在删除过程。无论如何,在调用 initWithFetchRequest 时将 cacheName 设置为 nil 可以解决我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2011-09-02
      相关资源
      最近更新 更多