Has anyone else run into the issue where the uuids of app crash logs for the core libraries don't match those in the debug symbol's links on the Swift.org - Download Swift page? I'd imagine it's because the Xcode team separately builds Swift when it ships, but even though they're the same Swift version, they doesn't have matching UUIDs when I do the dwarfdump command on the .dSYMs.
Does anyone have a solution for this that's worked for them beyond editing their crash logs?
They aren't necessarily the same, unfortunately. Apple may have non-open-source patches applied to its version of the standard libraries, just like it has for the compiler in the past.
What's the symptom of this? What information would you like to get from the crash logs that you're not getting? Specific line numbers in the stdlib seem like more implementation detail than you should be relying on, since if Swift ever gets shipped as part of the OS that'll be the end of that.
private func syncFilesInDirectory(_ url: URL) {
sendQueue.addOperation { [unowned self] in
do {
let logFiles = try self.fileManagementService.contentsOfDirectory(url)
let archivedLogFiles = logFiles.filter {
$0.pathExtension == Constants.archivedSuffix
}
for logFile in archivedLogFiles where !self.filesInQueue.contains(logFile) {
self.filesInQueue.insert(logFile)
self.syncLogFile(logFile)
}
} catch {
Config.logger.error("Could not find log directory to send logs: \(error)")
}
}
}
And basically, I'm pretty stuck. Swift throws a fatalError, which unfortunately doesn't show up in crash logs that apps create. The way I ended up debugging it was to pull the debugging symbols from the swift download page, and then going into my crash log with a text editor and replacing the udid of Xcode's Swift with the one dwarfdump gave me.
Which led me to something being wrong with the Set I was using, which led me to the fact that I needed to put a lock around my set.
I can do that udid overwrite everytime, but it can be really annoying. If Xcode could publish their dSYMs for the Swift core libraries, it would be helpful for situations like this.