Недавно мы выпустили обновление для одного из наших приложений, и многие пользователи сказали нам, что больше не могут запускать приложение, потому что он разбился при запуске.
Мы смогли воссоздать сбой, построив и запустив предыдущую версию релиза на устройство, а затем построим и запустим надстройку новой сборки на одном устройстве, но трассировка стека для этого сбоя очень странная:
Thread 0 Crashed:
0 libSystem.B.dylib 0x000791d0 __kill + 8
1 libSystem.B.dylib 0x000791c0 kill + 4
2 libSystem.B.dylib 0x000791b2 raise + 10
3 libSystem.B.dylib 0x0008d6fa abort + 50
4 GraphicsServices 0x00003aa8 GSRegisterPurpleNamedPort + 172
5 GraphicsServices 0x00003d5a GSEventInitialize + 150
6 UIKit 0x00004cd6 UIApplicationMain + 350
7 MyApp 0x0000df5c main (main.m:14)
8 MyApp 0x00002c84 start + 32
Кажется, что сбой в методе UIApplicationMain вызывает основные вызовы. Но он падает до того, как он достигнет любого из методов в нашем делете приложения. Я поставил точки останова во всех методах делегата приложения, и ни один из них не был достигнут.
Кроме того, это происходит только для пользователей, которые обновляют приложение. Пользователи, загружающие его из магазина приложений, уже не находясь на своих iPhone, не видят проблемы.
Кто-нибудь когда-либо сталкивался с такой катастрофой? Почему эта проблема возникает только для обновлений?