自 SDK 8 更新以来,iOS 8 UIApplicationMain 崩溃

标签 ios crash ios8 xcode6 callstack

自从我将 Xcode 更新到 6.0.1 并将 iOS SDK 更新到 8.0 后,我的应用程序不再在设备上运行(运行 iOS 8 ofc)。 但它在模拟器中完美运行。

在对委托(delegate)进行任何调用之前,应用程序在 UIApplicationMain 中崩溃。 CFTypeCollectionRetain 中的值或键似乎为空。

我试过了

  • 重新创建证书/配置文件。
  • 使用/不使用 ARC 进行重建。
  • 测试了 armv7 和 arm64 版本。
  • Xcode 模板(游戏)应用程序编译和运行没有问题。

注意事项

  • 几乎所有代码都是 C++,它是一个游戏引擎并且使用最少的操作系统服务。
  • 一些全局构造函数(在 main 之前执行)正在使用 pthreads 原语。
  • 没有创建 Root View Controller (遗留原因),而是创建了一个使用 CAEAGLLayer 来“启用”GLES 的自定义 View ...但是由于程序没有达到创建它们的地步,所以我忽略了它暂时。
  • 在 UIApplicationMain 中有一个对 [_UIFlippingView layerClass] 的调用崩溃了;但在 Google 上找不到有关 UIFlippingView 类的任何信息...

我不希望得到答案,但如果有任何关于下一步看哪里的好建议,我们将不胜感激!

调用栈如下:

* thread #1: tid = 0x185d9, 0x23f7646c CoreFoundation`__CFTypeCollectionRetain + 104, queue = 'com.apple.main-thread', stop reason = EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe)
  * frame #0: 0x23f7646c CoreFoundation`__CFTypeCollectionRetain + 104
    frame #1: 0x23fd9168 CoreFoundation`__CFBasicHashAddValue + 564
    frame #2: 0x23ec06c0 CoreFoundation`CFBasicHashAddValue + 19048
    frame #3: 0x23ef745e CoreFoundation`CFDictionaryCreate + 178
    frame #4: 0x28a8d246 BackBoardServices`BKSHIDEventCreateClientAttributes + 186
    frame #5: 0x28a8d2ac BackBoardServices`___getHIDEventSystemClient_block_invoke + 36
    frame #6: 0x01fab740 libdispatch.dylib`dispatch_once_f + 100
    frame #7: 0x28a8d318 BackBoardServices`BKSHIDEventRegisterEventCallback + 84
    frame #8: 0x274ab4a8 UIKit`UIApplicationMain + 576
    frame #9: 0x0008833c Traktor.Amalgam.App`main(argc=1, argv=0x01d3f9e8) + 196 at Main.mm:15

    CoreFoundation`__CFTypeCollectionRetain:
    0x23f76404:  push   {r4, r5, r7, lr}
    0x23f76406:  mov    r4, r1
    0x23f76408:  add    r7, sp, #0x8
    0x23f7640a:  cbz    r4, 0x23f7646c            ; __CFTypeCollectionRetain + 104
    0x23f7640c:  ldrd   r0, r1, [r4]
    0x23f76410:  cmp    r0, #0x0
    0x23f76412:  ubfx   r1, r1, #0x8, #0xa
    0x23f76416:  beq    0x23f7644a                ; __CFTypeCollectionRetain + 70
    0x23f76418:  movw   r2, #0xdf70
    0x23f7641c:  movt   r2, #0xe02
    0x23f76420:  add    r2, pc
    0x23f76422:  ldr    r2, [r2]
    0x23f76424:  cmp    r0, r2
    0x23f76426:  beq    0x23f7644a                ; __CFTypeCollectionRetain + 70
    0x23f76428:  movw   r2, #0x4aa4
    0x23f7642c:  movt   r2, #0xe03
    0x23f76430:  add    r2, pc
    0x23f76432:  ldr.w  r5, [r2, r1, lsl #2]
    0x23f76436:  cmp    r0, r5
    0x23f76438:  beq    0x23f7644a                ; __CFTypeCollectionRetain + 70
    0x23f7643a:  tst.w  r0, #0x1
    0x23f7643e:  beq    0x23f76456                ; __CFTypeCollectionRetain + 82
    0x23f76440:  mov    r0, r4
    0x23f76442:  blx    0x2400d1e0                ; symbol stub for: +[NSMutableOrderedSet orderedSetWithCapacity:]
    0x23f76446:  cmp    r0, r5
    0x23f76448:  bne    0x23f76456                ; __CFTypeCollectionRetain + 82
    0x23f7644a:  mov    r0, r4
    0x23f7644c:  movs   r1, #0x0
    0x23f7644e:  pop.w  {r4, r5, r7, lr}
    0x23f76452:  b.w    0x23eafc38                ; _CFRetain
    0x23f76456:  movw   r0, #0xb93e
    0x23f7645a:  movt   r0, #0xe02
    0x23f7645e:  add    r0, pc
    0x23f76460:  ldr    r1, [r0]
    0x23f76462:  mov    r0, r4
    0x23f76464:  pop.w  {r4, r5, r7, lr}
    0x23f76468:  b.w    0x2400c0c8                ; objc_msgSend$shim
    0x23f7646c:  trap   -- TRAPPED HERE
    0x23f7646e:  nop  


在 UIApplicationMain 代码中,有趣的是对 [_UIFlippingView layerClass] 的调用崩溃了......


    0x274ab486:  blx    0x27b5b248                ; symbol stub for: roundf$shim
    0x274ab48a:  movs   r5, #0x0
    0x274ab48c:  movw   r0, #0x60f1
    0x274ab490:  movt   r0, #0x0
    0x274ab494:  add    r0, pc
    0x274ab496:  blx    0x27b595d8                ; symbol stub for: -[UIGravityBehavior _commonInit]
    0x274ab49a:  movw   r0, #0xfa8f
    0x274ab49e:  movt   r0, #0xfff9
    0x274ab4a2:  add    r0, pc
    0x274ab4a4:  blx    0x27b59068     -- THIS CALL           ; symbol stub for: +[_UIFlippingView layerClass]
    0x274ab4a8:  mov    r0, r5
    0x274ab4aa:  mov    r1, r11
    0x274ab4ac:  blx    0x27b5b248                ; symbol stub for: roundf$shim
    0x274ab4b0:  movw   r1, #0x23e4
    0x274ab4b4:  movt   r1, #0xb12
    0x274ab4b8:  add    r1, pc
    0x274ab4ba:  ldr    r1, [r1]
    0x274ab4bc:  blx    0x27b5b248                ; symbol stub for: roundf$shim

最佳答案

能够解决问题!!
显然,Xcode 有一个坏主意,即自动生成与“产品名称”不匹配的“产品模块名称”设置,因此在设备上运行时导致应用程序崩溃。这是令人难以置信的糟糕,但恕我直言,对 Xcode 的期望...

关于自 SDK 8 更新以来,iOS 8 UIApplicationMain 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960255/

相关文章:

ios - 带有字符串数组的 UILocalizedIndexedCollat​​ion

ios - Swift 2.1 错误排序到位,仅在发布版本上

ios - 当CMMotionManager回调 'startDeviceMotionUpdatesToQueue'时应用程序崩溃

loops - 我想从一波中产生的不同敌人的数量中随机化产生的敌人的继承。 (TD游戏),我该怎么做?

ios - 在 Swift 中的自定义单元格之间切换

ios - 什么可能导致 Swift sharedInstance 返回上的 EXC_BREAKPOINT

ios - Xcode 4,基于 View 的应用程序 + UITableView 向上滚动时崩溃

ios - UITableView 自调整单元格滚动问题,单元格高度差异很大

swift - 无法使用 XCTAssertEqual 在 Swift 中将表达式类型 void 转换为整数类型

iOS 8.4 + Swift - 来自 UINavigationController 的自定义转换,如何将行为限制为导航堆栈中的一个转换?