iOS - 如何理解和正确调试此类崩溃:com.apple.root.background-qos?
iOS - How to understand and properly debug this type of crash : com.apple.root.background-qos?
我知道这个问题已经被问过好几次了,但要么没有得到回答,要么答案完全没有帮助。
这是我的崩溃报告:
尤其是评论帮助我理解了(某种程度上)我的问题。
It seems from your crash log com.apple.root.background-qos, this is the thread request which might be over committed due to which it exist as it cannot take any more request.
如果我没理解错,处理请求的线程可能无法处理更多的请求?
如何调试和测试它?我无法重现崩溃。
注意: 在我的启动器服务中,我正在执行 5 或 6 个请求,每个请求在 dispatchGroup.enter / .leave 完成后分开,如下所示:
dispatchGroup.enter()
self.fetchObservationForecast(lat: lat, lon: lon) { result in
switch result {
case .success(let observationForecast) :
print("Observation Forecast request succeeded")
model["observationForecast"] = observationForecast
break
case .failure(let error) :
print("Observation Forecast request failed : \(error)")
model["observationForecast"] = error
break
}
dispatchGroup.leave()
}
我是不是看错地方了?我如何测试和重现它以提交修复?
如有任何帮助,我们将不胜感激。
崩溃是由指示的 LauncherService 方法中的闭包引起的。跟踪表明您在设置字典值时崩溃了。
可变 Swift 字典不是线程安全的,这个事实连同 background.qos 指示器让我认为你是 reading/writing 多线程上的字典。
这可能类似于下面的 model["observationForecast"] =
代码。
dispatchGroup.enter()
self.fetchObservationForecast(lat: lat, lon: lon) { result in
switch result {
case .success(let observationForecast) :
print("Observation Forecast request succeeded")
model["observationForecast"] = observationForecast
break
case .failure(let error) :
print("Observation Forecast request failed : \(error)")
model["observationForecast"] = error
break
}
dispatchGroup.leave()
}
我知道这个问题已经被问过好几次了,但要么没有得到回答,要么答案完全没有帮助。
这是我的崩溃报告:
It seems from your crash log com.apple.root.background-qos, this is the thread request which might be over committed due to which it exist as it cannot take any more request.
如果我没理解错,处理请求的线程可能无法处理更多的请求?
如何调试和测试它?我无法重现崩溃。
注意: 在我的启动器服务中,我正在执行 5 或 6 个请求,每个请求在 dispatchGroup.enter / .leave 完成后分开,如下所示:
dispatchGroup.enter()
self.fetchObservationForecast(lat: lat, lon: lon) { result in
switch result {
case .success(let observationForecast) :
print("Observation Forecast request succeeded")
model["observationForecast"] = observationForecast
break
case .failure(let error) :
print("Observation Forecast request failed : \(error)")
model["observationForecast"] = error
break
}
dispatchGroup.leave()
}
我是不是看错地方了?我如何测试和重现它以提交修复?
如有任何帮助,我们将不胜感激。
崩溃是由指示的 LauncherService 方法中的闭包引起的。跟踪表明您在设置字典值时崩溃了。
可变 Swift 字典不是线程安全的,这个事实连同 background.qos 指示器让我认为你是 reading/writing 多线程上的字典。
这可能类似于下面的 model["observationForecast"] =
代码。
dispatchGroup.enter()
self.fetchObservationForecast(lat: lat, lon: lon) { result in
switch result {
case .success(let observationForecast) :
print("Observation Forecast request succeeded")
model["observationForecast"] = observationForecast
break
case .failure(let error) :
print("Observation Forecast request failed : \(error)")
model["observationForecast"] = error
break
}
dispatchGroup.leave()
}