【问题标题】:Unable to reproduce crash from iOS App Review Team无法重现 iOS App Review Team 的崩溃
【发布时间】:2021-05-06 23:33:47
【问题描述】:

我的最新手机游戏更新在按下“开始”按钮从主菜单场景加载游戏场景后立即被 iOS App Review Team 拒绝,因为他们崩溃了。在没有提供崩溃日志的情况下,他们告诉我自己去重现崩溃,然后确定并解决问题(哈哈,是的,伙计)。我无法重现此问题,因此我向他们的收件箱发送了三天的垃圾邮件,他们最终向我提供了崩溃日志。我无法在 Xcode 中表示崩溃日志,因为我在虚拟机上运行 MacOS,无法连接到设备(我拒绝购买 Mac 只是为了发布免费手机游戏),所以我我发现自己处于死胡同。我在下面附上了完整的崩溃日志。如果有人可以帮助我了解可能导致崩溃的原因,我将不胜感激。崩溃发生在线程 0 上。我从日志中删除了很多详细信息以将其放入帖子中,以便在需要时提供更多信息。

Incident Identifier: E1CC2B12-75DA-4704-A9BA-9923B4EE44A3
CrashReporter Key:   d5a46eb6fe6765b9893f0126d9ae455c5b11cea1
Hardware Model:      xxx
Process:             AppName [4775]
Path:                /private/var/containers/Bundle/Application/8C49D650-D44B-40CA-9071-6EE143554D36/AppName.app/AppName
Identifier:          com.Company-Name.AppName
Version:             1 (1.0.8)
AppStoreTools:       12E262
Code Type:           ARM-64 (Native)
Role:                Foreground
Parent Process:      launchd [1]
Coalition:           com.Company-Name.AppName [1637]


Date/Time:           2021-05-06 15:53:25.8187 +0100
Launch Time:         2021-05-06 15:53:17.5422 +0100
OS Version:          iPhone OS 14.5.1 (18E212)
Release Type:        User
Baseband Version:    n/a
Report Version:      104

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000000
VM Region Info: 0 is not in any region.  Bytes before following region: 4376707072
      REGION TYPE                 START - END      [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                   104df4000-104df8000 [   16K] r-x/r-x SM=COW  ...app/AppName

Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_platform.dylib        0x00000001c993d128 0x1c9936000 + 28968
1   UnityFramework                  0x0000000105747228 0x105098000 + 7008808
2   UnityFramework                  0x00000001057530e8 0x105098000 + 7057640
3   UnityFramework                  0x000000010542fe74 0x105098000 + 3767924
4   UnityFramework                  0x0000000105710c10 0x105098000 + 6786064
5   UnityFramework                  0x000000010571226c 0x105098000 + 6791788
6   UnityFramework                  0x00000001057123b8 0x105098000 + 6792120
7   UnityFramework                  0x000000010557f470 0x105098000 + 5141616
8   UnityFramework                  0x000000010556f4b8 0x105098000 + 5076152
9   UnityFramework                  0x0000000105461350 0x105098000 + 3969872
10  UnityFramework                  0x00000001054621cc 0x105098000 + 3973580
11  UnityFramework                  0x0000000105463438 0x105098000 + 3978296
12  UnityFramework                  0x0000000105463ad8 0x105098000 + 3979992
13  UnityFramework                  0x00000001054562a4 0x105098000 + 3924644
14  UnityFramework                  0x00000001054562e4 0x105098000 + 3924708
15  UnityFramework                  0x00000001054565ac 0x105098000 + 3925420
16  UnityFramework                  0x000000010578cecc 0x105098000 + 7294668
17  UnityFramework                  0x00000001050b2290 0x105098000 + 107152
18  UnityFramework                  0x00000001050b21f8 0x105098000 + 107000
19  QuartzCore                      0x00000001851f98e4 0x1851e6000 + 80100
20  IOKit                           0x000000018c6ba0f8 0x18c6b3000 + 28920
21  CoreFoundation                  0x00000001820953dc 0x18201e000 + 488412
22  CoreFoundation                  0x00000001820b8fc0 0x18201e000 + 634816
23  CoreFoundation                  0x00000001820b83c4 0x18201e000 + 631748
24  CoreFoundation                  0x00000001820b2538 0x18201e000 + 607544
25  CoreFoundation                  0x00000001820b16a8 0x18201e000 + 603816
26  GraphicsServices                0x0000000198761570 0x19875e000 + 13680
27  UIKitCore                       0x00000001849cf370 0x183ea0000 + 11727728
28  UIKitCore                       0x00000001849d48ec 0x183ea0000 + 11749612
29  UnityFramework                  0x00000001050b1cc8 0x105098000 + 105672
30  AppName                         0x0000000104dfbe1c 0x104df4000 + 32284
31  libdyld.dylib                   0x0000000181d90140 0x181d8f000 + 4416    

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x00000002a0000060   x2: 0x0000000025bc53e0   x3: 0x0000000000000020
    x4: 0x0000000000000000   x5: 0x0000000000000020   x6: 0x0000000000000015   x7: 0x0000000000000000
    x8: 0xbf800000bde131b9   x9: 0x3f586c393f7178c0  x10: 0xb4000000b4000000  x11: 0xbe39a80dbcc13b57
   x12: 0xbe3db1abbca0ee69  x13: 0x3e8a242ebd91359d  x14: 0x3ea8e51ebf679701  x15: 0xbeaaa529bf6fb740
   x16: 0x00000001c993d0e0  x17: 0x0000000000000001  x18: 0x0000000000000000  x19: 0x0000000147b0e2e0
   x20: 0x00000002a0000020  x21: 0x0000000025bc5400  x22: 0x0000000000000000  x23: 0x000000014654f790
   x24: 0x0000000147b0e2e0  x25: 0x00000001456e4040  x26: 0x0000000000000000  x27: 0x000000014654f790
   x28: 0x0000000000000000   fp: 0x000000016b0090a0   lr: 0x0000000105747228
    sp: 0x000000016b009040   pc: 0x00000001c993d128 cpsr: 0x20000000
   esr: 0x56000080  Address size fault

【问题讨论】:

  • “我拒绝购买 Mac 只是为了发布免费的手机游戏”不幸的是,您最终可能需要购买一个……在虚拟机上进行测试与在虚拟机上进行测试不同真正的 Mac。

标签: ios unity3d crash crash-reports symbolicatecrash


【解决方案1】:

阅读时错误非常明显。首先,EXC_BAD_ACCESS (SIGSEGV) 表示它正在访问不应该访问的内存。其次,KERN_INVALID_ADDRESS at 0x0000000000000000NULL 的地址。换句话说,您有一个空引用异常,在单击开始时被抛出。由于我看不到您的代码,因此我不知道具体情况。如果您有任何 #if UNITY_IOS or #if UNITY_ANDROID 条件限制代码,则可能是 iOS 版本缺少分配。如果您想了解有关内存访问崩溃的更多信息,请阅读Apple's writeup

我应该补充一点,这个空引用异常可能不是直接来自您的代码。如果您在项目中使用在 iOS 上运行不同的插件或库,则可能是问题所在。由于您的问题没有太多信息可以得出,因此很难说。你能列出你可以使用的任何包吗?你有 iPhone 可以亲自测试吗?如果不是,我会认真考虑至少找一个人来测试你的 iOS 游戏,而不是盲目地发布到实时环境。

【讨论】:

  • 感谢您的回复!想一想,我最近刚刚为广告展示位置实施了#if UNITY_IOS 或#if UNITY_ANDROID 条件语句。我可以尝试删除它,然后硬编码每个相应构建的条件。我还了解到,如果场景打开时间过长,可能会导致应用程序崩溃,因此我将尝试暂时延迟广告和音频管理器的初始化,以便更有效地加载场景。我没有使用很多软件包,但我正在使用 Unity Ads 软件包,这也可能是罪魁祸首
  • @DiamondPaws 我怀疑 iOS 的 if 条件中的任何内容都因某些引用异常而失败。只要在所有平台上进行测试,使用条件就可以了。您正在谈论的崩溃不会产生内存报告。该应用程序将崩溃。当您的应用程序尝试一次加载太多数据时(例如在初始化期间),就会发生这种情况。我认为这不是问题。
【解决方案2】:

您可以尝试使用atos 命令来表示地址。例如:

atos -arch arm64 -o UnityFramework.framework/UnityFramework -l 0x105098000 0x0000000105747228 0x00000001057530e8 0x000000010542fe74 ...and so on

-l 选项后面是 UnityFramework 映像的基地址,然后是堆栈地址。 然后你可以看到函数调用栈的符号,找出调用崩溃函数的地方。 这些也适用于 CoreFoundation、UIKitCore。

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多