1

我们有一个 AR 项目(内置于 Unity),它在博物馆的许多 iPad Pro(12.9,第 3 代)上运行 24/7。它已经存在了 2.5 年。我们总是偶尔出现冻结(在 iOS 13 及更低版本上),但最近它们变得更糟(在 iOS 14.4.2 和 14.6 上)。

问题表现如下,完全随机:我们的应用程序一直在后台运行(我们可以听到声音并看到数据库活动仍在继续),但它停止重绘,导致屏幕冻结在最后绘制的任何帧上。

我们在冻结时得到一个 gpuevent .ips 日志(见下文),其中包含有关 IOSurface 被 IOFence 阻止的信息。不过,关于这些日志的在线信息非常少,所以我们有点坚持分析。从我所能找到的一点点来看,似乎我们有一些资源,可能是纹理缓冲区,它被两个进程同时访问,导致其中一个进程(负责绘制屏幕的进程)被操作系统杀死。这听起来合理吗?如果是这样,我们如何找出问题在代码中的哪个位置被触发?

这里的任何人都可以比我们更好地解释此日志,还是有人对我们的下一步有建议?

{"bug_type":"284","timestamp":"2021-07-10 10:51:30.00 +0200","os_version":"iPhone OS 14.6 (18F72)","incident_id":"C3ABD477-2A61-4D43-A3B1-25D7CCD706E6"}
{
  "process_name" : "hats",
  "registers" : {

  },
  "timestamp" : 1625907090,
  "analysis" : {
    "iofence_list" : {
      "iofence_num_iosurfaces" : 1,
      "iofence_iosurfaces" : [
        {
          "iofence_current_queue" : [
            {
              "iofence_acceleratorid" : 1,
              "iofence_backtrace" : [
                -68148358856,
                -68148357636,
                -68144533400,
                -68144532380,
                -68144496896,
                -68144598792,
                -68144425788,
                -68144434312
              ],
              "iofence_direction" : 1
            }
          ],
          "iosurface_id" : 243,
          "iofence_waiting_queue" : [
            {
              "iofence_acceleratorid" : 2,
              "iofence_backtrace" : [
                -68148358856,
                -68148357636,
                -68146420632,
                -68154559340,
                -68146423972,
                -68146427004,
                -68146495056,
                -68154290536
              ],
              "iofence_direction" : 2
            },
            {
              "iofence_acceleratorid" : 1,
              "iofence_backtrace" : [
                -68148358856,
                -68148357636,
                -68144533400,
                -68144532380,
                -68144496896,
                -68144598792,
                -68144425788,
                -68144434312
              ],
              "iofence_direction" : 1
            }
          ]
        }
      ]
    },
    "fw_ta_substate" : {
      "slot0" : 0,
      "slot1" : 0
    },
    "fw_power_state" : 0,
    "fw_power_boost_controller" : 0,
    "guilty_dm" : 1,
    "fw_power_controller_in_charge" : 0,
    "fw_cl_state" : {
      "slot0" : 0
    },
    "fw_perf_state_lo" : 1,
    "fw_ta_state" : {
      "slot0" : 0,
      "slot1" : 0
    },
    "signature" : 625,
    "fw_power_substate" : 4,
    "command_buffer_trace_id" : 490782964,
    "fw_perf_state_select" : 0,
    "restart_reason" : 7,
    "fw_3d_state" : {
      "slot0" : 0,
      "slot1" : 0,
      "slot2" : 0
    },
    "fw_gpc_perf_state" : 0,
    "fw_perf_state_hi" : 1,
    "fw_power_limit_controller" : 7,
    "restart_reason_desc" : "blocked by IOFence"
  }
}
4

0 回答 0