SIGABRT 在 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 上崩溃

Posted

技术标签:

【中文标题】SIGABRT 在 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 上崩溃【英文标题】:SIGABRT crash on __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 【发布时间】:2011-11-21 16:06:10 【问题描述】:

我有一个我不熟悉的 SIGABRT 崩溃日志。看起来它正在引发异常,但我看不到异常在哪里列出或它的根本原因。

这是在客户的 iPad 2 / ios 4.3 上运行的。

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x33ed3a1c __pthread_kill + 8
1   libsystem_c.dylib               0x354d83b4 pthread_kill + 52
2   libsystem_c.dylib               0x354d0bf8 abort + 72
3   libstdc++.6.dylib               0x33671a64 __gnu_cxx::__verbose_terminate_handler() + 376
4   libobjc.A.dylib                 0x3636906c _objc_terminate + 104
5   libstdc++.6.dylib               0x3366fe36 __cxxabiv1::__terminate(void (*)()) + 46
6   libstdc++.6.dylib               0x3366fe8a std::terminate() + 10
7   libstdc++.6.dylib               0x3366ff5a __cxa_throw + 78
8   libobjc.A.dylib                 0x36367c84 objc_exception_throw + 64
9   Foundation                      0x33f69924 __NSThreadPerformPerform + 648
10  CoreFoundation                  0x33e4ba72 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 6
11  CoreFoundation                  0x33e4d758 __CFRunLoopDoSources0 + 376
12  CoreFoundation                  0x33e4e4e4 __CFRunLoopRun + 224
13  CoreFoundation                  0x33ddeebc CFRunLoopRunSpecific + 224
14  CoreFoundation                  0x33ddedc4 CFRunLoopRunInMode + 52
15  GraphicsServices                0x33544418 GSEventRunModal + 108
16  GraphicsServices                0x335444c4 GSEventRun + 56
17  UIKit                           0x34416d62 -[UIApplication _run] + 398
18  UIKit                           0x34414800 UIApplicationMain + 664
19  MyApp                           0x000190c4 main (main.m:14)
20  MyApp                           0x0001907c 0x18000 + 4220

我从哪里开始寻找诊断?

【问题讨论】:

objc_exception_throw 上设置断点,看看是否能提供更多信息。 【参考方案1】:

程序应将有关异常的信息打印到设备控制台(连接设备时可在 Xcode 管理器中查看)。看到这些信息会非常非常有帮助。

_NSThreadPerformPerformperformSelector... 系列方法使用。所以看看你对这些方法的使用。特别是,弄清楚您是否有可能要求一个对象执行它不支持的选择器。这会引发异常。

【讨论】:

以上是关于SIGABRT 在 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

pthread_join / __pthread_internal_find 函数发生SIGABRT的crash (Android)

OC内存管理-runloop

在AppDelegate类上发出SIGABRT信号

AppDelegate 类上的信号 SIGABRT

选择 UISegmentedControl 控件会导致 SIGABRT

遇到信号 SIGABRT 错误