You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Getting the following sporadic crash. Seems like we are using strict concurrency but a number of cases of unchecked means that we bypass the guarantee.
Here's some code from the trace
actor CachedAsyncImageCacheProcessor: CachedAsyncImageCacheProcessable {
...
func cancel(url: URL) {
guard let downloadTaskCount = pendingTasksURLMap[url] else { return }
if downloadTaskCount.`count` == 0 {
downloadTaskCount.task.cancel()
pendingTasksURLMap[url] = nil
imageRetriever.cancel(url: url) // traces here
} else {
pendingTasksURLMap[url] = TaskCount(task: downloadTaskCount.task, count: downloadTaskCount.count - 1)
}
}
...
}
class RemoteImageManager: CachedAsyncImageRetrievable {
...
func cancel(url: URL) {
worker.cancelDownload(url: url) // traces here
}
...
}
final class KingfisherWorker: RemoteImageWorkable {
...
func cancelDownload(url: URL) {
KingfisherManager.shared.downloader.cancel(url: url) // traces here
}
...