【问题标题】:Firebase crashlytics reports many <compiler-generated> line 0 crashes in my production build, are these crashes for real?Firebase crashlytics 在我的生产版本中报告了许多 <compiler-generated> 第 0 行崩溃,这些崩溃是真的吗?
【发布时间】:2019-01-30 13:18:02
【问题描述】:

我在我的 swift 项目中使用 websocket,从过去几周开始,我收到了这些崩溃:

第 0 行

Crashed: com.MyProject.Channel
0  MYProject                         0x100e53f7c specialized    Arrayat(_:) (<compiler-generated>)
1  MYProject                         0x100e55a3c   $S6MYProject7ChannelC20checkResponseMessage33_12B1408E1049A8D244FCDCBD3CEC  8679LL08responseE0yAA0bE0C_tFyyXEfU_ (Channel.swift:137)
2  MYProject                         0x100ce3de8 $SIg_Ieg_TR (<compiler-generated>)
3  MYProject                         0x100ce3e08 $SIeg_IyB_TR (<compiler-generated>)

更多信息来自代码:

Channel.TMLock.sync {
        var idx = 0
        for msg in Channel.trackedMsgs {
            mt = msg
            if msg.isResponseTo(responseMessage: responseMessage) {
                Channel.trackedMsgs.remove(at: idx)
                break
            }

            idx += 0
        }
    }

Channel.swift:137 => Channel.trackedMsgs.remove(at: idx)

有人对此有任何想法吗?

【问题讨论】:

  • 如果您附上包含 Channel.swift:137 行的方法代码,我们可能会假设有什么问题。
  • @NazarLisovyi 我添加了更多代码以便更好地理解。
  • 显然,您想删除索引超出范围的元素。这个逻辑看起来不对
  • @NazarLisovyi 我也假设了同样的原因,但我只是不明白与 () 连接的连接。
  • 是的,line 0 在 Swift 堆栈跟踪中是真实存在的。查看此问题中的详细信息:stackoverflow.com/questions/53872700/….

标签: ios swift crash firebase-crash-reporting


【解决方案1】:
Channel.TMLock.sync {
    var idx = 0
    for msg in Channel.trackedMsgs {
        mt = msg
        if msg.isResponseTo(responseMessage: responseMessage) {
            Channel.trackedMsgs.remove(at: idx) -> Removing elements while iteration will cause crash
            break
        }

        idx += 0
    }
}

您可以将其重写为:

Channel.TMLock.sync {
        var idx = 0
        var indexOfElement = 0
        while indexOfElement < Channel.trackedMsgs.length{
        mt = msg
        if msg.isResponseTo(responseMessage: responseMessage) {
                Channel.trackedMsgs.remove(at: idx)
                break
            }

            idx += 0
            indexOfElement += 1
        }
    }

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 2019-03-03
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    相关资源
    最近更新 更多