syscall_thread_switch iOS 8.3比赛 - CocoaLumberjack错误?怎么调试这个?

时间:2015-04-14 10:13:12

标签: ios multithreading grand-central-dispatch race-condition lumberjack

我在我的应用程序中遇到了竞争条件,每当我暂停调试时,除了1个线程之外的所有或所有线程都会卡在syscall_thread_switch上。它在模拟器上更频繁地再现,但也在iPad Air上再现。在CocoaLumberjack的queueLogMessage中总共至少有2个线程: - 请参见截图。

我以前从未在8.1和8.2上看过这个,但我经常在8.3上看到它。我并不是说这是一个8.3小虫:)

这是我以前从未调试过的复杂程度,所以我不知道该怎么做。我希望我能提供足够的信息,如果您需要更多信息,请告诉我(如果信息不明确,请具体说明如何获取信息)。你能帮我调试一下吗?!数百万的感谢。

thread overview

thread details 1

thread details 2

main thread position

1 个答案:

答案 0 :(得分:3)

我在iOS 8.3的NSOperationQueue中遇到了与NSOperations类似的问题(与CocoaLumberjack无关)。我有并发操作创建自己的线程,不再需要它。它在8.2中表现得非常好,但不是8.3。

在start方法中,我只需更换:

[NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];

使用:

[self main];