syscall_thread_switch Гонка iOS 8.3 - ошибка CocoaLumberjack? как это отладить?

Я столкнулся с условием гонки в моем приложении, когда все или все потоки, кроме 1, зависают на syscall_thread_switch всякий раз, когда я приостанавливаю отладку. Он воспроизводится гораздо чаще на симуляторе, но и на iPad Air. В QueueLogMessage у CocoaLumberjack есть ВСЕГДА как минимум 2 потока: - см. Скриншоты.

Я никогда не видел этого раньше на 8.1 и 8.2, но часто нахожусь на 8.3. Я не утверждаю, что это ошибка 8.3:)

Это уровень сложности, который мне никогда не приходилось отлаживать, поэтому я не уверен, что делать. Я надеюсь, что я предоставляю достаточно информации, пожалуйста, дайте мне знать, если вам нужно больше (пожалуйста, уточните, как получить информацию, если она не до конца ясна). Можете ли вы помочь мне отладить это?! Миллионы благодарностей.

Обзор темы

детали нити 1

детали нити 2

положение основной резьбы

1 ответ

Я столкнулся с аналогичной проблемой с NSOperations в NSOperationQueue в iOS 8.3 (не относится к CocoaLumberjack). У меня были параллельные операции по созданию собственных потоков, которые больше не нужны. В 8.2 он вел себя превосходно, но не в 8.3.

В методе запуска я просто заменил:

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

С:

[self main];
Другие вопросы по тегам