7

我在 App Store 上的最新版本有一个奇怪的问题。一些用户报告升级应用程序后启动时应用程序崩溃,并且仅在 iOS6 上发生。但是,如果用户删除应用程序并重新安装,则不会发生崩溃。

我检查了手机上的崩溃日志并看到了这个错误。

OS Version:      iOS 6.0 (10A403)

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: EXC_ARM_DA_ALIGN at 0x2fe6f785
Crashed Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   My App                          0x00074ace +[aClass sharedNormalImages] (aClass.m:34)
1   dyld                            0x2fe79628 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 16
2   dyld                            0x2fe76a3a ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 382
3   dyld                            0x2fe76874 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 36
4   dyld                            0x2fe6dd04 dyld::initializeMainExecutable() + 172
5   dyld                            0x2fe7085c dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 1804
6   dyld                            0x2fe6d32c dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 604
7   dyld                            0x2fe6d064 _dyld_start + 60

与最近的版本相比,sharedNormalImages 函数根本没有改变,它只是一个返回这样一个数组的函数。

static NSArray *normalImages = nil;
+ (NSArray *)sharedNormalImages
{
     if (normalImages == nil) {
             normalImages = @[@"xx.png", @"xy.png", @"yx.png", @"yy.png"];
     }

     return normalImages;
}

我真的不知道会发生什么。我尝试用旧版本安装,然后用 Xcode 替换为新版本。问题也不会发生。所以我根本无法在我的环境中复制它。这太奇怪了。

编辑

不确定它是如何相关的,但我在设备控制台上看到了此错误消息。

Oct 19 12:36:16 iPhone My App[210] <Error>: objc[210]: Class  is implemented in both /var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB/My App.app/My App and /var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB/My App.app/My App. One of the two will be used. Which one is undefined.
Oct 19 12:36:16 iPhone kernel[0] <Debug>: launchd[210] Builtin profile: container (sandbox)
Oct 19 12:36:16 iPhone kernel[0] <Debug>: launchd[210] Container: /private/var/mobile/Applications/A5EC61E7-7DBA-4FA5-A5FE-6D49EAFAD6EB (sandbox)
Oct 19 12:36:16 iPhone ReportCrash[211] <Notice>: Formulating crash report for process My App[210]
Oct 19 12:36:16 iPhone com.apple.launchd[1] (UIKitApplication:com.acompany.myapp[0x813f][210]) <Warning>: (UIKitApplication:com.acompany.myapp[0x813f]) Job appears to have crashed: Bus error: 10
Oct 19 12:36:16 iPhone com.apple.launchd[1] (UIKitApplication:com.acompany.myapp[0x813f]) <Notice>: (UIKitApplication:com.acompany.myapp[0x813f]) Throttling respawn: Will start in 2147483647 seconds
Oct 19 12:36:16 iPhone backboardd[52] <Warning>: Application 'UIKitApplication:com.acompany.myapp[0x813f]' exited abnormally with signal 10: Bus error: 10
Oct 19 12:36:16 iPhone ReportCrash[211] <Error>: libMobileGestalt copySystemVersionDictionaryValue: Could not lookup ReleaseType from system version dictionary
Oct 19 12:36:16 iPhone ReportCrash[211] <Notice>: Saved crashreport to /var/mobile/Library/Logs/CrashReporter/My App_2012-10-19-123616_iPhone.plist using uid: 0 gid: 0, synthetic_euid: 501 egid: 0

仅供参考,我将应用程序图标更新为在最新更新中“预呈现”,但我认为这不会导致崩溃。

4

1 回答 1

1

要复制该问题,请尝试以下步骤:

  1. 使用 Ad-Hoc Provisioning 配置文件构建两个版本,
  2. 使用 iTunes 安装旧版本。
  3. 在设备上打开应用程序并浏览所有视图。
  4. 使用 iTunes 更新新版本的应用程序并运行
于 2012-10-19T05:39:34.530 回答