App 崩溃,但仅在 iOS 14 上,并且仅当通过 MDM 安装时才发生

问题描述 投票:0回答:1

我们的 iOS/iPadOS 应用程序发生了极其奇怪的崩溃。

我们最新版本的一些重大变化:

  • 在 Big Sur 11.6 上使用 Xcode 13.0 构建
  • 放弃对 iOS 13 的支持
  • 更新 Firebase 到 8.9.1
  • 使用最新的 fastlane 版本构建

好吧,这是奇怪的部分:我们的应用程序适用于直接从 App Store 或 iOS 14 和 15 上的 TestFlight 下载并安装该应用程序的用户。

但是,对于 iOS 14 用户,该应用程序在启动时崩溃,这些用户通过 MDM 从 App Store(公共或私人发布,无关紧要)将应用程序推送到他们的手机,并从一个对话框中安装它,例如“AirWatch 即将从 App Store 安装 REDACTED。您的 iTunes 帐户不会为此应用收费。”

那么自己安装后启动应用程序和 MDM 安装后启动应用程序有什么区别——在这两种情况下,应用程序都来自 App Store?

这是一个示例崩溃日志:

{"app_name":"REDACTED","timestamp":"REDACTED","app_version":"REDACTED","slice_uuid":"REDACTED","adam_id":REDACTED,"build_version":"REDACTED","platform":0,"bundleID":"com.REDACTED.REDACTEDapp","share_with_app_devs":0,"is_first_party":0,"bug_type":"109","os_version":"iPhone OS 14.6 (18F72)","incident_id":"REDACTED","name":"REDACTED"}
Incident Identifier: REDACTED
CrashReporter Key:   REDACTED
Hardware Model:      iPhone11,8
Process:             REDACTED [1561]
Path:                /private/var/containers/Bundle/Application/REDACTED/REDACTED.app/REDACTED
Identifier:          com.REDACTED.REDACTEDapp
Version:             REDACTED
AppStoreTools:       13A1030d
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.REDACTED.REDACTEDapp [562]


Date/Time:           2021-10-26 15:17:43.5707 -0500
Launch Time:         2021-10-26 15:17:43.1390 -0500
OS Version:          iPhone OS 14.6 (18F72)
Release Type:        User
Baseband Version:    3.04.01
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000115596b28
Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [1561]
Highlighted by Thread:  0

Backtrace not available

Unknown thread crashed with ARM Thread State (64-bit):
    x0: 0x000000016d11d5c0   x1: 0x0000000000000008   x2: 0x0000000000000000   x3: 0x0000000000000000
    x4: 0x000000016d11d590   x5: 0x0000000000000020   x6: 0x736665727373616c   x7: 0x0000000000000600
    x8: 0x000000005f24901f   x9: 0x000000000f8884a0  x10: 0x000000000000901c  x11: 0x0000000000000003
   x12: 0x0000000000ff0006  x13: 0x000000000000c000  x14: 0x0000000000000001  x15: 0xffffffffffffffff
   x16: 0x00000001030879cc  x17: 0x6ae100016d11d440  x18: 0x0000000000000000  x19: 0x0000000115596b28
   x20: 0x000000016d11daf8  x21: 0x000000016d11dad0  x22: 0x0000000105d00000  x23: 0x000000000f896b28
   x24: 0x000000005f24901f  x25: 0x0000000105d0e680  x26: 0x000000000000e688  x27: 0x000000016d11db08
   x28: 0x0000000000001b99   fp: 0x000000016d11d6a0   lr: 0xba6bf2010306bf84
    sp: 0x000000016d11d620   pc: 0x000000010306beec cpsr: 0x00000000
   esr: 0x00000000  Address size fault

Binary images description not available

Error Formulating Crash Report:
Failed to create CSSymbolicatorRef - corpse still valid ¯\_(ツ)_/¯

EOF

我们没有看到这些崩溃出现在 Crashlytics 或 Xcode 管理器中,我们也从来没有得到堆栈跟踪或有用的错误消息。

我可以使用我们的 VMWare Workspace One (AirWatch) UEM 测试帐户在本地重现崩溃,但它不会发生在 AdHoc 或 Developer 构建上,如果 Xcode 与实时调试器会话连接也不会发生。

我们尝试使用 DER 编码重新生成所有配置文件,然后重新签名并将应用程序重新提交给 Apple,但这并没有解决问题。我们还尝试关闭 LTO(链接时间优化)并将 Firebase 回滚到出现此问题之前的版本 7.11.

注意:我们在应用程序中可以想到的任何地方都添加了日志记录,包括 AppDelegate init 方法,但是当它在 iOS 14 MDM 安装上崩溃时,我们在控制台中根本看不到任何日志消息(而当它在 iOS 15 上启动时我们获得大量日志消息并且没有崩溃)。

这是另一个崩溃日志示例。有时我们会像这样获得 VMRegion 信息,有时我们不会。

Incident Identifier: B5916B4C-5F24-43B4-B038-8F20B4CF60DE
CrashReporter Key:   a31b47951ef9c86f80d994b5128fd8f81060023a
Hardware Model:      iPad6,8
Process:             REDACTED [514]
Path:                /Volumes/VOLUME/*/REDACTED.app/REDACTED
Identifier:          com.REDACTED.REDACTEDapp
Version:             2021.0.58 (2021.44.0.433401)
AppStoreTools:       13A1030d
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.REDACTED.REDACTEDapp [307]

Date/Time:           2021-11-01 16:12:12.7748 -0700
Launch Time:         2021-11-01 16:12:12.4122 -0700
OS Version:          iPhone OS 14.7.1 (18G82)
Release Type:        User
Baseband Version:    10.80.01
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x000000011a3351c8
VM Region Info: 0x11a3351c8 is not in any region.  Bytes after previous region: 4553  Bytes before following region: 1395945016
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      VM_ALLOCATE              11a330000-11a334000 [   16K] rw-/rwx SM=PRV  
--->  GAP OF 0x53348000 BYTES
      Stack Guard              16d67c000-16d680000 [   16K] ---/rwx SM=NUL  
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: SIGNAL; [11]
Terminating Process: exc handler [514]

Terminating Process: exc handler [514]
Highlighted by Thread:  0

Backtrace not available

No thread state (register information) available

Binary Images:
               0x0 - 0xffffffffffffffff ??? unknown-arch  <00000000000000000000000000000000> ???

Error Formulating Crash Report:_dyld_process_info_create failed with 6
Failed to create CSSymbolicatorRef - corpse still valid ¯\_(ツ)_/¯

EOF

另一个例子:

Incident Identifier: 7C56CCB2-79BC-4AF2-91C2-5CFC8A0ABBA6
CrashReporter Key:   a31b47951ef9c86f80d994b5128fd8f81060023a
Hardware Model:      iPad6,8
Process:             REDACTED MDM [27056]
Path:                /Volumes/VOLUME/*/REDACTED MDM.app/REDACTED MDM
Identifier:          com.REDACTED.REDACTEDappmdm
Version:             2021.0.63 (2021.46.5.000005)
AppStoreTools:       13A1030d
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.REDACTED.REDACTEDappmdm [1967]

Date/Time:           2021-11-11 17:22:03.7594 -0800
Launch Time:         2021-11-11 17:22:01.0685 -0800
OS Version:          iPhone OS 14.7.1 (18G82)
Release Type:        User
Baseband Version:    10.80.01
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000180000fa8
VM Region Info: 0x180000fa8 is not in any region.  Bytes after previous region: 4009  Bytes before following region: 685764696
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      VM_ALLOCATE              17fffc000-180000000 [   16K] rw-/rwx SM=PRV  
--->  GAP OF 0x28e00000 BYTES
      unused shlib __TEXT      1a8e00000-1b0000000 [114.0M] r-x/r-x SM=COW  ... this process
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: SIGNAL; [11]
Terminating Process: exc handler [27056]

Terminating Process: exc handler [27056]
Highlighted by Thread:  0

Backtrace not available

No thread state (register information) available

Binary Images:
               0x0 - 0xffffffffffffffff ??? unknown-arch  <00000000000000000000000000000000> ???

Error Formulating Crash Report:_dyld_process_info_create failed with 6
Failed to create CSSymbolicatorRef - corpse still valid ¯\_(ツ)_/¯

EOF

唯一的共同线程似乎是有一个 VM_ALLOCATE 分配了一个大小为 0x4000 位的块。对于 DATA 段来说,这是一个很常见的大小,所以我认为这不是特别有用的信息。

更新:

我们发现将部署目标设置回 iOS 13 不会发生问题。它仅在部署目标为 14 或更高时发生。此外,崩溃发生在我们甚至在我们的应用程序中运行一行代码之前,根据没有看到我们添加到我们的 UIApplication 和 UIApplicationDelegate 类以及许多静态加载方法中的所有 init 方法的任何 os_log 消息。

xcode crash ios14 mdm xcode13
1个回答
-1
投票

这个问题有什么解决办法吗?看起来 Xcode 14 仍然存在这个问题

© www.soinside.com 2019 - 2024. All rights reserved.