Missing UUID dSYM within the AppStore downloaded dSYMs (more targets app)
Asked Answered
I

2

6

I face to the following issue with iOS app (XCode 10.3):

  • Crashlytics says that I have a missing dSYM, and provides the missing dSYM UUID (I have both required and optional UUIDs missing)
  • The app is BitCode app, and dSYMs are downloaded from AppStore, and uploaded to Crashlytics. I see many other crashes from the other dSYMs that were downloaded and de-symbolicate correctly.
  • The app is multi-target app. Before, when the app was just single target app, everything worked fine. The additional targets seems to be an issue.
  • All targets have BitCode and DWARF with dSYM selected
  • All targets call Crashlytics run in build phase (at least I believe I do this correctly)
  • Targets are watch app, watch app extension, Siri intent, Siri intent UI, and the iOS app widget.
  • I have manually opened the downloaded dSYM from AppStore and the missing dSYM UUID is really missing.
  • I also checked the locally built app archive, and the dSYM UUID is not there (yes, expected result)

Any idea, where to get the missing dSYM, would make a bit happier... Please.

Irrawaddy answered 26/8, 2019 at 8:42 Comment(3)
Same problem here. This probably isn't anything to do with Crashlytics. You can get a little lower level by getting your build UUID from the crash report, normally the first line in the Binary Images section is the app, followed by frameworks, and the bit in angle brackets is the UUID for the image. If there is a matching dsym, it symbolicates, bug for crashes I can't symbolicate, the dsym is missing.Adroit
This has nothing to do with Crashlytics for sure. The root cause seems to be AppStore, because I download less dSYM files from AppStore than I did upload. I have not resolved this issue, I have found the bug and fixed the crash. What helped me a bit is XCode -> Window -> Organizer -> Crashes. Not showing everything by far, but showed me the missing info for fixing the bug.Irrawaddy
Just did some more digging. On a hunch, I just tried dwarfdump --lookup=<offset> where offset is the + number in the stack trace, using a non-matching dsym file for the same binary and architecture. This gave me the same location as a different crash report that was symbolicating from the same build. I don't have more time to spend now, but my best guess is that it is a framework that hasn't changed from a beta install or similar, so it has a different UUID, but same code.Adroit
G
1

Sometimes the UUIDs that are assigned on appstoreconnect are incorrect. The crash reports contain the correct ones -- i.e. the stack trace attributes a line to the correct binary image. In the case of the uploaded dsyms having incorrect UUIDs Crashlytics is not able to match the line in the stack trace to any uploaded dsyms so it flags them as missing.

But there is a way to rewrite the UUID of a dsym and then re-upload it to crashlytics.

Note: This method is risky. If you overwrite the dSYM's UUID with an incorrect one and then upload it to Crashlytics, there is no way to correct that mistake. So you need to be absolutely sure that you A) are looking for the correct binary image; and B) that you have the correct UUID.

Here is how to do it:

Step A: In Crashlytics:

  1. Note down the version of the build for which a dsym is missing
  2. Note down the UUID of the missing dsym

Step B: Find an unsymbolicated line in one of your crash files for that version:

(note: in most cases it's your app's binary image, in which case you can just skip all steps here and then just use your app's name as binary image)

  1. Open Xcode -> Window -> Organiser
  2. In the left-hand pane, select Crashes
  3. Use the drop-down menu in the top left-hand corner to select the version you are interested in
  4. Once all the crashes for that version are downloaded, locate the crash you are interested in
  5. Find the line in the crash report you are interested in and which is not symbolicated
  6. Note down the binary image

Step C-a: Locate and replace the dsym with the incorrect UUID manually:

  1. Open Xcode -> Window -> Organiser
  2. In the left-hand pane, select Archives
  3. Select the archive that corresponds to the version you noted down in Step A)
  4. In the right hand pane, select Download Debug Symbols
  5. Once finished downloading, in the Organiser right click the archive -> Show in Finder
  6. In Finder, right click the archive -> Show Package Contents
  7. Go to the dSYMs directory
  8. Optional: Sort the finder list by Size in DESC order
  9. Starting from the top, right click the first dsym file -> Show Package Contents
  10. Navigate to Contents -> Resources -> Dwarf
  11. Compare the name of the file inside the Dwarf directory with the binary image name you noted down in Step B) 6.
  12. If it matches, follow the steps outlined in this excellent writeup to replace the UUID manually
  13. If it doesn't match, repeat step 9 - 11, going through all dsym files until you found the right one

Step C-b: Locate and replace the dsym with the incorrect UUID automatically:

  1. Open Xcode -> Window -> Organiser
  2. In the left-hand pane, select Archives
  3. Select the archive that corresponds to the version you noted down in Step A)
  4. In the right hand pane, select Download Debug Symbols
  5. Once finished downloading, in the Organiser right click the archive -> Show in Finder
  6. In Finder, right click the archive -> Show Package Contents
  7. Go to the dSYMs directory
  8. Use this command line program to replace the UUID by providing the binary image name and correct UUID
Griffin answered 17/8, 2021 at 16:29 Comment(0)
D
0

Try using mdfind "com_apple_xcode_dsym_uuids == <UUID>" to find a dSYM witha specific UUID on your machine.

If this doesn't work then my hunch is that crashlytics catches crashes from these non-supported targets, also shows missing UUIDs but the dSYM files are not available at all, not even on iTunes Connect.

Divergent answered 27/8, 2019 at 13:48 Comment(1)
missing dSYM not found on my machine - as expected, it is build as bitcode, so Apple recompiles it. Yes, this UUID is missing also in the zip from appstoreconnect. Thanks anyway.Irrawaddy

© 2022 - 2025 — McMap. All rights reserved.