3

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

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

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

thread overview

thread details 1

thread details 2

main thread position

+0

CocoaLumberjack выглядит немного более сконструированную для меня. Я бы использовал альтернативу (т. Е. Написать свой собственный). – trojanfoe

+0

Извините, переключение с cocoalumberjack было бы слишком большим изменением прямо сейчас. Кроме того, он настолько широко используется в таких крупных проектах, что проблема в моем коде (а не в cocoalumberjack). Но я не знаю, как отлаживать это. – xaphod

+0

UPDATE: похоже, это ошибка в CocoaLumberjack. Отслеживание здесь: https://github.com/CocoaLumberjack/CocoaLumberjack/issues/494 – xaphod

ответ

3

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

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

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

С:

[self main]; 

 Смежные вопросы

  • Нет связанных вопросов^_^