Сбой синтаксического анализа при вызове [PFFacebookUtils initializeFacebook] — semaphore_wait_trap

Начиная с последней версии Parse (v1.6.3) мое приложение зависает при запуске, и последняя точка останова, с которой оно сталкивается, это [PFFacebookUtils initializeFacebook];. Если я нажму на паузу и посмотрю на отладчик, трассировка стека будет выглядеть так:

введите здесь описание изображения

Я звоню [PFFacebookUtils initializeFacebook] в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions как и советовали.

Судя по поиску проблемы semaphore_wait_trap, она связана с конфликтом фоновых потоков (?) в Core Data. Но я попытался закомментировать все мои фоновые запросы Parse, и это все еще происходит.

Я попытался обновить модули (кстати, это произошло до обновления). Я также могу запускать приложение с чистой установки, пока не войду в Facebook, после чего сбой происходит каждый раз, когда я пытаюсь запустить. PFUser, кажется, возвращается нормально при запросе. Я также очистил всю свою базу данных, но это не имело значения.

Кто-нибудь знает, что может происходить?


person Smikey    schedule 24.02.2015    source источник
comment
Просто подал это как ошибку на facebook. developers.facebook.com/bugs/383878198474328   -  person Liron    schedule 27.04.2015


Ответы (2)


Я видел ту же проблему и обнаружил, что изменение порядка этой последовательности инициализации (я использую swift) помогло мне пройти ее (в частности, комментирование локального хранилища данных также разблокирует его):

Это попадает в semaphore_wait_trap:

// Parse integration initialization
Parse.enableLocalDatastore()
Parse.setApplicationId("<my app id>", clientKey: "<my client key>")
PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
PFFacebookUtils.initializeFacebook()

Это не:

// Parse integration initialization
Parse.enableLocalDatastore()
Parse.setApplicationId("<my app id>", clientKey: "<my client key>")
PFFacebookUtils.initializeFacebook()
PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)

Не уверен в основной проблеме, но надеюсь, что это поможет.

person jrichau    schedule 25.02.2015
comment
Кажется, это сработало... не знаю почему, но, по крайней мере, теперь это снова работает. Несколько беспокоит, что изменение API может сломать живые приложения... - person Smikey; 03.03.2015
comment
Хм, это начало происходить снова - с перерывами, после нескольких запусков моего приложения. Работает нормально, если я очищаю сборку и удаляю приложение, но затем снова начинает происходить после нескольких запусков. Пробовал перетасовывать вызовы методов, но, похоже, это не имеет значения... Если я закомментирую включение локального хранилища данных, все заработает, но тогда, конечно, у меня нет доступа к моему локальному хранилищу данных. Обновлены стручки, но все еще происходит. Может ли это быть изменением бэкэнда Parse? - person Smikey; 07.04.2015
comment
Обновились ли вы до facebook SDK 4.0.1 и последних библиотек Parse? В итоге я изменил вызов инициализации на PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions), когда сделал это (ранее сегодня). Также обратите внимание, что вам понадобится ParseFacebookUtilsV4, если вы используете кокосовые капсулы... - person jrichau; 09.04.2015
comment
Я пробовал все вышеперечисленное, да. Это забавно, потому что это не происходит сразу, обычно только после нескольких запусков... - person Smikey; 10.04.2015
comment
Видя то же самое в Obj-C - person Liron; 27.04.2015
comment
Я разместил свои второстепенные проблемы здесь: stackoverflow.com/questions/29695690/ - person Smikey; 27.04.2015

Кажется, исправлено с разбором 1.7.2

Согласно v1.7.2 — 27 апреля 2015 г.

Новое: общий доступ к локальным данным для расширений и WatchKit. Улучшены аннотации обнуляемости для ParseFacebookUtils.
Исправлено: logOutInBackground с блочным обратным вызовом, не вызываемым в основном потоке. Исправлено: возможная ошибка компиляции при использовании импорта для PFSubclassing.h.
Исправлено: не сохранялся currentUser при сохранении автоматического пользователя через saveEventually.
Исправлено: редкий сценарий взаимоблокировки с использованием ParseFacebookUtils и currentUser.< br> Исправлено: редкая проблема с закреплением нескольких объектов подряд на одном и том же контакте.
Исправлено: редкий сценарий, когда пользователь мог не быть связан с Facebook.
Повышена производительность и надежность локального хранилища данных. Повышение производительности.
Исправлены другие мелкие ошибки.

person Liron    schedule 28.04.2015
comment
Отлично, надеюсь, это поможет! Если вы опубликуете свой ответ здесь, я могу пометить его как принятый, поскольку приведенный выше вопрос немного отличается: stackoverflow.com/questions/29695690/ - person Smikey; 28.04.2015
comment
@Smikey Звучит хорошо. Я думаю, ты собираешься подтолкнуть меня к более чем 1000 повторений. - person Liron; 28.04.2015