我们最近对其中一个应用程序进行了更新,许多用户告诉我们,他们无法再运行应用程序,因为它在启动时崩溃了.
我们已经能够通过在设备上构建和运行以前的版本构建来重新创建崩溃,然后在同一设备上构建并运行它的新构建,但是这次崩溃的堆栈跟踪非常奇怪:
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
Run Code Online (Sandbox Code Playgroud)
它似乎在主要调用的UIApplicationMain方法中崩溃.但它在到达我们的app委托中的任何方法之前崩溃了.我在所有app委托方法中都放置了断点,但没有达到它们.
此外,这似乎只发生在更新应用程序的用户身上.正在从应用程序商店下载它而没有将其放在iPhone上的用户没有看到问题.
有没有人遇到这样的崩溃?为什么只有更新会出现此问题?
hot*_*aw2 19
这是iOS 4.0下的吗?据报道,当此应用程序的先前安装中的进程或线程崩溃并且某些操作系统尚未清除或已在调试器中挂起时,会发生此类错误.
在安装新版本的应用程序后重启iPhone会导致此错误消失吗?这将是一个很好的迹象,表明操作系统中的某些东西在之前的安装中被卡住/损坏,而不是在应用程序包本身中.
我一直有同样的问题(谢天谢地,我在提交到AppStore之前就抓住了它).与此答案状态不同,问题仍然出现在iOS 5.x和6.x上.
所以我进入控制台,发现在我的应用程序崩溃之前记录了一些消息.首先是这条消息:
com.apple.launchd.peruser.503 [148] :( UIKitApplication:BUNDLE-ID [0x4fb5] [20462])以下作业试图从此作业中劫持服务"BUNDLE-ID-1":UIKitApplication:BUNDLE-ID -1 [0xac31]
控制台中的下一条消息随后会立即显示:
GSRegisterPurpleNamedPort无法向引导服务器注册BUNDLE ID.错误:未知错误代码(1100).这通常意味着此进程的另一个实例已在运行或挂起在调试器中.
崩溃是由已在系统上运行的另一个几乎相同的进程引起的.这听起来像iOS的问题而不是应用程序本身.这应该有助于澄清问题.最好的办法可能是告诉用户退出应用程序,尝试重新启动并再次打开.
我还向Apple提交了一份错误报告,详细说明了这个问题.
编辑:看起来这可能是Xcode本身的一个问题.Apple刚刚发布了一个应该解决问题的更新(至少在模拟器中):
