Сбой iOS WebTryThreadLock - PullRequest
       0

Сбой iOS WebTryThreadLock

5 голосов
/ 22 марта 2012

В моем приложении произошел сбой, который я не могу отладить на всю жизнь. При подключении и отладке из Xcode на устройстве и включенном NSZombieEnabled сбой не происходит. Когда я отключаю и запускаю приложение самостоятельно или включаю NSZombieEnabled, оно каждый раз вылетает.

Вот что я получаю, когда выключаю NSZombieEnabled: EXC_BAD_ACCESS

bool _WebTryThreadLock(bool), 0x58a260: Multiple locks on web thread not allowed! Please file a bug. Crashing now...
1   _ZL17_WebTryThreadLockb
2   _ZL14WebRunLoopLockP19__CFRunLoopObservermPv
3   __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
4   __CFRunLoopDoObservers
5   __CFRunLoopRun
6   CFRunLoopRunSpecific
7   CFRunLoopRunInMode
8   _ZL12RunWebThreadPv
9   _pthread_start
10  thread_start

Вот трассировка стека от тестового полета:

0 App 0x001ff492 testflight_backtrace + 142
1 App 0x001fffac TFSignalHandler + 212
2 libsystem_c.dylib 0x349e9538 _sigtramp + 48
3 JavaScriptCore 0x34b66aee WTFReportBacktrace + 146
4 WebCore 0x33ed5676 _ZL14WebRunLoopLockP19__CFRunLoopObservermPv + 30
5 CoreFoundation 0x33b39b4a __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
6 CoreFoundation 0x33b37d86 __CFRunLoopDoObservers + 258
7 CoreFoundation 0x33b3804e __CFRunLoopRun + 614
8 CoreFoundation 0x33abb4dc CFRunLoopRunSpecific + 300
9 CoreFoundation 0x33abb3a4 CFRunLoopRunInMode + 104
10 WebCore 0x33f7712e _ZL12RunWebThreadPv + 402
11 libsystem_c.dylib 0x349a0c1c _pthread_start + 320
12 libsystem_c.dylib 0x349a0ad7 thread_start + 7

У меня был этот сбой раньше, и я решил его, добавив строку в мой метод viewDidLoad на одном из контроллеров представления, где происходил сбой:

[[NSRunLoop currentRunLoop] runUntilDate: [NSDate dateWithTimeIntervalSinceNow:0.01]];

Эта строка сейчас не помогает.

Процесс, вызывающий сбой приложения: Контроллер представления текущего ресурса, Отклонить общий доступ к контроллеру, Переключить представление вкладки на tabViewController, Нажмите кнопку, которая представляет контроллер share2 view

Я не делаю никакой фоновой обработки или изменения какого-либо пользовательского интерфейса, сбой происходит ПРАВО, когда вы нажимаете кнопку, которая представляет контроллер представления share2. Этого сбоя не было несколько дней назад, и я попытался отменить все свои изменения, чтобы найти причину проблемы, но мне не повезло.

Я также искал интернет на предмет этой ошибки, и никакая информация, которую я нашел, не помогла мне.

Буду очень признателен за любой совет, чтобы указать мне правильное направление, спасибо!

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Трассировка стека совсем не помогает, она просто показывает, что исключение повторно генерируется из другого цикла выполнения.Вам нужен отчет о сбое, который также показывает трассировку последнего исключения, чтобы получить представление о том, откуда оно идет.

Без этого знания это довольно дикое предположение: я предполагаю, что веб-просмотр все еще работает в фоновом режиме, а затем пытаетсяотправить некоторые данные своему делегату.Вы установили делегата в контроллере общего доступа?Вы установили nil на viewWillDisappear или viewDidDisappear?

PS: добавленная вами строка NSRunLoop - отвратительный хак, вам не следует этого делать, поскольку она ничего не исправляет по-настоящему.

PPS: Существуют другие платформы и службы отчетов о сбоях, основанные на PLCrashReporter, которые обеспечивают обратную трассировку последнего исключения и показывают состояние всех потоков, а не только основного потока.

0 голосов
/ 03 июля 2012

Я закончил навигацию между двумя проблемными экранами, и с тех пор у меня не было проблем.

Мой ответ: всегда используйте навигацию по яблокам и не пытайтесь создавать свои собственные: P

0 голосов
/ 20 апреля 2012

Мой был вызван самим TestFlight SDK.Убрал «взлет» TestFlight и больше не терпел крушения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...