iOS的8 UIApplicationMain崩溃,因为SDK 8日更新(iOS 8 UIAppli

2019-10-21 00:20发布

由于我Xcode更新到6.0.1和iOS SDK 8.0我的应用程序不再在设备上运行(运行iOS 8 OFC)。 但是,它完美的模拟器。

在UIApplicationMain应用崩溃的委托任何调用之前曾经发生过。 这似乎一个值或密钥为空在CFTypeCollectionRetain。

我试过了

  • 重塑证书/提供配置文件。
  • 重新修建有/无ARC。
  • 测试了ARMv7体系和arm64建立。
  • Xcode的模板(游戏)应用程序编译和运行没有probs。

需要注意的事项

  • 几乎所有的代码是C ++,它是一个游戏引擎和正在使用的操作系统服务最低限度。
  • 一些全局构造(前主执行)使用并行线程原语。
  • 无根视图控制器创建(遗留原因),而不是自定义视图中创建它使用CAEAGLLayer为“Enable” GLES ......但是因为程序没有达到这些地方创建我忽略了它的存在时间点。
  • 内部UIApplicationMain有至[_UIFlippingView layerClass],其崩溃的呼叫; 但找不到任何有关的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

Answer 1:

能够解决这个问题!
显然Xcode中有一个autogenerating“产品模块名称”设置的设备上运行时不匹配“产品名称”,从而坠毁应用程序的坏主意。 这是mindbogglingly坏但恕我直言所期待的Xcode ...



文章来源: iOS 8 UIApplicationMain crash since SDK 8 update